@dxos/assistant-toolkit 0.8.4-main.7ace549 → 0.8.4-main.8baae0fced

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 (572) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/neutral/add-artifact-7Z2OMHGM.mjs +30 -0
  3. package/dist/lib/neutral/add-artifact-7Z2OMHGM.mjs.map +7 -0
  4. package/dist/lib/neutral/agent-ZTAQNX5E.mjs +65 -0
  5. package/dist/lib/neutral/agent-ZTAQNX5E.mjs.map +7 -0
  6. package/dist/lib/neutral/chunk-7UCYAP3T.mjs +332 -0
  7. package/dist/lib/neutral/chunk-7UCYAP3T.mjs.map +7 -0
  8. package/dist/lib/neutral/chunk-ANSF2BHN.mjs +67 -0
  9. package/dist/lib/neutral/chunk-ANSF2BHN.mjs.map +7 -0
  10. package/dist/lib/neutral/chunk-BALMVGVP.mjs +291 -0
  11. package/dist/lib/neutral/chunk-BALMVGVP.mjs.map +7 -0
  12. package/dist/lib/neutral/chunk-COL54UJ3.mjs +60 -0
  13. package/dist/lib/neutral/chunk-COL54UJ3.mjs.map +7 -0
  14. package/dist/lib/neutral/chunk-EHGCPRUX.mjs +70 -0
  15. package/dist/lib/neutral/chunk-EHGCPRUX.mjs.map +7 -0
  16. package/dist/lib/neutral/chunk-EJAQUAKM.mjs +73 -0
  17. package/dist/lib/neutral/chunk-EJAQUAKM.mjs.map +7 -0
  18. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  19. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  20. package/dist/lib/neutral/chunk-JH5J5N3Q.mjs +75 -0
  21. package/dist/lib/neutral/chunk-JH5J5N3Q.mjs.map +7 -0
  22. package/dist/lib/neutral/chunk-JHYEZDFH.mjs +65 -0
  23. package/dist/lib/neutral/chunk-JHYEZDFH.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-KGU725LW.mjs +29 -0
  25. package/dist/lib/neutral/chunk-KGU725LW.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-MMQ7HFL4.mjs +107 -0
  27. package/dist/lib/neutral/chunk-MMQ7HFL4.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-NR3GTWRC.mjs +53 -0
  29. package/dist/lib/neutral/chunk-NR3GTWRC.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-Q2TFHHQH.mjs +101 -0
  31. package/dist/lib/neutral/chunk-Q2TFHHQH.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-WLR3BGO4.mjs +25 -0
  33. package/dist/lib/neutral/chunk-WLR3BGO4.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-ZFXLTBZG.mjs +73 -0
  35. package/dist/lib/neutral/chunk-ZFXLTBZG.mjs.map +7 -0
  36. package/dist/lib/neutral/context-add-S5MBW2NA.mjs +22 -0
  37. package/dist/lib/neutral/context-add-S5MBW2NA.mjs.map +7 -0
  38. package/dist/lib/neutral/context-remove-35O5T5N5.mjs +22 -0
  39. package/dist/lib/neutral/context-remove-35O5T5N5.mjs.map +7 -0
  40. package/dist/lib/neutral/create-project-3ILVMUYF.mjs +35 -0
  41. package/dist/lib/neutral/create-project-3ILVMUYF.mjs.map +7 -0
  42. package/dist/lib/neutral/delete-J3PMWP7Z.mjs +19 -0
  43. package/dist/lib/neutral/delete-J3PMWP7Z.mjs.map +7 -0
  44. package/dist/lib/neutral/enable-blueprints-IVKST3WH.mjs +47 -0
  45. package/dist/lib/neutral/enable-blueprints-IVKST3WH.mjs.map +7 -0
  46. package/dist/lib/neutral/fetch-KHMHV7JR.mjs +16 -0
  47. package/dist/lib/neutral/fetch-KHMHV7JR.mjs.map +7 -0
  48. package/dist/lib/neutral/fetch-messages-QOBBCTGC.mjs +139 -0
  49. package/dist/lib/neutral/fetch-messages-QOBBCTGC.mjs.map +7 -0
  50. package/dist/lib/neutral/get-context-45LC3XX3.mjs +35 -0
  51. package/dist/lib/neutral/get-context-45LC3XX3.mjs.map +7 -0
  52. package/dist/lib/neutral/index.mjs +914 -0
  53. package/dist/lib/neutral/index.mjs.map +7 -0
  54. package/dist/lib/neutral/load-GAT3T2AD.mjs +17 -0
  55. package/dist/lib/neutral/load-GAT3T2AD.mjs.map +7 -0
  56. package/dist/lib/neutral/meta.json +1 -0
  57. package/dist/lib/neutral/object-create-PL3WRP74.mjs +35 -0
  58. package/dist/lib/neutral/object-create-PL3WRP74.mjs.map +7 -0
  59. package/dist/lib/neutral/object-delete-PZJQN5KW.mjs +18 -0
  60. package/dist/lib/neutral/object-delete-PZJQN5KW.mjs.map +7 -0
  61. package/dist/lib/neutral/object-update-R43N3VJX.mjs +28 -0
  62. package/dist/lib/neutral/object-update-R43N3VJX.mjs.map +7 -0
  63. package/dist/lib/neutral/project-BIHH5G57.mjs +23 -0
  64. package/dist/lib/neutral/project-BIHH5G57.mjs.map +7 -0
  65. package/dist/lib/neutral/project-rules-FVGXETAI.mjs +78 -0
  66. package/dist/lib/neutral/project-rules-FVGXETAI.mjs.map +7 -0
  67. package/dist/lib/neutral/prompt-INL55Q2B.mjs +170 -0
  68. package/dist/lib/neutral/prompt-INL55Q2B.mjs.map +7 -0
  69. package/dist/lib/neutral/qualifier-ANAPS6SX.mjs +88 -0
  70. package/dist/lib/neutral/qualifier-ANAPS6SX.mjs.map +7 -0
  71. package/dist/lib/neutral/query-MP5NSQKO.mjs +69 -0
  72. package/dist/lib/neutral/query-MP5NSQKO.mjs.map +7 -0
  73. package/dist/lib/neutral/query-U56GNEV6.mjs +32 -0
  74. package/dist/lib/neutral/query-U56GNEV6.mjs.map +7 -0
  75. package/dist/lib/neutral/query-blueprints-PLWYVOI3.mjs +16 -0
  76. package/dist/lib/neutral/query-blueprints-PLWYVOI3.mjs.map +7 -0
  77. package/dist/lib/neutral/relation-create-YAAAFTR2.mjs +34 -0
  78. package/dist/lib/neutral/relation-create-YAAAFTR2.mjs.map +7 -0
  79. package/dist/lib/neutral/relation-delete-IEPKERFR.mjs +18 -0
  80. package/dist/lib/neutral/relation-delete-IEPKERFR.mjs.map +7 -0
  81. package/dist/lib/neutral/save-GWAPLT3Z.mjs +23 -0
  82. package/dist/lib/neutral/save-GWAPLT3Z.mjs.map +7 -0
  83. package/dist/lib/neutral/schema-add-5BNIINRS.mjs +24 -0
  84. package/dist/lib/neutral/schema-add-5BNIINRS.mjs.map +7 -0
  85. package/dist/lib/neutral/schema-list-54UK7S4R.mjs +38 -0
  86. package/dist/lib/neutral/schema-list-54UK7S4R.mjs.map +7 -0
  87. package/dist/lib/neutral/sync-issues-DWY76B3M.mjs +166 -0
  88. package/dist/lib/neutral/sync-issues-DWY76B3M.mjs.map +7 -0
  89. package/dist/lib/neutral/sync-triggers-2THNRKJ4.mjs +135 -0
  90. package/dist/lib/neutral/sync-triggers-2THNRKJ4.mjs.map +7 -0
  91. package/dist/lib/neutral/tag-add-NLVRGTC6.mjs +19 -0
  92. package/dist/lib/neutral/tag-add-NLVRGTC6.mjs.map +7 -0
  93. package/dist/lib/neutral/tag-remove-N4HFBIA2.mjs +19 -0
  94. package/dist/lib/neutral/tag-remove-N4HFBIA2.mjs.map +7 -0
  95. package/dist/lib/neutral/testing/index.mjs +76 -0
  96. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  97. package/dist/lib/neutral/update-blueprints-2SNK6HLG.mjs +16 -0
  98. package/dist/lib/neutral/update-blueprints-2SNK6HLG.mjs.map +7 -0
  99. package/dist/lib/neutral/update-tasks-LCULJYIO.mjs +13 -0
  100. package/dist/lib/neutral/update-tasks-LCULJYIO.mjs.map +7 -0
  101. package/dist/types/src/blueprints/automation/blueprint.d.ts +4 -0
  102. package/dist/types/src/blueprints/automation/blueprint.d.ts.map +1 -0
  103. package/dist/types/src/blueprints/automation/index.d.ts +2 -0
  104. package/dist/types/src/blueprints/automation/index.d.ts.map +1 -0
  105. package/dist/types/src/blueprints/blueprint-manager/blueprint.d.ts +4 -0
  106. package/dist/types/src/blueprints/blueprint-manager/blueprint.d.ts.map +1 -0
  107. package/dist/types/src/blueprints/blueprint-manager/blueprint.test.d.ts +2 -0
  108. package/dist/types/src/blueprints/blueprint-manager/blueprint.test.d.ts.map +1 -0
  109. package/dist/types/src/blueprints/blueprint-manager/functions/definitions.d.ts +61 -0
  110. package/dist/types/src/blueprints/blueprint-manager/functions/definitions.d.ts.map +1 -0
  111. package/dist/types/src/blueprints/blueprint-manager/functions/enable-blueprints.d.ts +36 -0
  112. package/dist/types/src/blueprints/blueprint-manager/functions/enable-blueprints.d.ts.map +1 -0
  113. package/dist/types/src/blueprints/blueprint-manager/functions/index.d.ts +4 -0
  114. package/dist/types/src/blueprints/blueprint-manager/functions/index.d.ts.map +1 -0
  115. package/dist/types/src/blueprints/blueprint-manager/functions/query-blueprints.d.ts +27 -0
  116. package/dist/types/src/blueprints/blueprint-manager/functions/query-blueprints.d.ts.map +1 -0
  117. package/dist/types/src/blueprints/blueprint-manager/functions/update-blueprints.d.ts +4 -0
  118. package/dist/types/src/blueprints/blueprint-manager/functions/update-blueprints.d.ts.map +1 -0
  119. package/dist/types/src/blueprints/blueprint-manager/index.d.ts +3 -0
  120. package/dist/types/src/blueprints/blueprint-manager/index.d.ts.map +1 -0
  121. package/dist/types/src/blueprints/browser/blueprint.d.ts +4 -0
  122. package/dist/types/src/blueprints/browser/blueprint.d.ts.map +1 -0
  123. package/dist/types/src/blueprints/browser/blueprint.test.d.ts +2 -0
  124. package/dist/types/src/blueprints/browser/blueprint.test.d.ts.map +1 -0
  125. package/dist/types/src/blueprints/browser/index.d.ts +2 -0
  126. package/dist/types/src/blueprints/browser/index.d.ts.map +1 -0
  127. package/dist/types/src/blueprints/database/blueprint.d.ts +4 -0
  128. package/dist/types/src/blueprints/database/blueprint.d.ts.map +1 -0
  129. package/dist/types/src/blueprints/database/blueprint.test.d.ts +2 -0
  130. package/dist/types/src/blueprints/database/blueprint.test.d.ts.map +1 -0
  131. package/dist/types/src/blueprints/database/functions/context-add.d.ts +7 -0
  132. package/dist/types/src/blueprints/database/functions/context-add.d.ts.map +1 -0
  133. package/dist/types/src/blueprints/database/functions/context-remove.d.ts +7 -0
  134. package/dist/types/src/blueprints/database/functions/context-remove.d.ts.map +1 -0
  135. package/dist/types/src/blueprints/database/functions/definitions.d.ts +59 -0
  136. package/dist/types/src/blueprints/database/functions/definitions.d.ts.map +1 -0
  137. package/dist/types/src/blueprints/database/functions/index.d.ts +4 -0
  138. package/dist/types/src/blueprints/database/functions/index.d.ts.map +1 -0
  139. package/dist/types/src/blueprints/database/functions/load.d.ts +7 -0
  140. package/dist/types/src/blueprints/database/functions/load.d.ts.map +1 -0
  141. package/dist/types/src/blueprints/database/functions/object-create.d.ts +8 -0
  142. package/dist/types/src/blueprints/database/functions/object-create.d.ts.map +1 -0
  143. package/dist/types/src/blueprints/database/functions/object-delete.d.ts +7 -0
  144. package/dist/types/src/blueprints/database/functions/object-delete.d.ts.map +1 -0
  145. package/dist/types/src/blueprints/database/functions/object-update.d.ts +10 -0
  146. package/dist/types/src/blueprints/database/functions/object-update.d.ts.map +1 -0
  147. package/dist/types/src/blueprints/database/functions/query.d.ts +12 -0
  148. package/dist/types/src/blueprints/database/functions/query.d.ts.map +1 -0
  149. package/dist/types/src/blueprints/database/functions/relation-create.d.ts +10 -0
  150. package/dist/types/src/blueprints/database/functions/relation-create.d.ts.map +1 -0
  151. package/dist/types/src/blueprints/database/functions/relation-delete.d.ts +7 -0
  152. package/dist/types/src/blueprints/database/functions/relation-delete.d.ts.map +1 -0
  153. package/dist/types/src/blueprints/database/functions/schema-add.d.ts +9 -0
  154. package/dist/types/src/blueprints/database/functions/schema-add.d.ts.map +1 -0
  155. package/dist/types/src/blueprints/database/functions/schema-list.d.ts +7 -0
  156. package/dist/types/src/blueprints/database/functions/schema-list.d.ts.map +1 -0
  157. package/dist/types/src/blueprints/database/functions/tag-add.d.ts +8 -0
  158. package/dist/types/src/blueprints/database/functions/tag-add.d.ts.map +1 -0
  159. package/dist/types/src/blueprints/database/functions/tag-remove.d.ts +8 -0
  160. package/dist/types/src/blueprints/database/functions/tag-remove.d.ts.map +1 -0
  161. package/dist/types/src/blueprints/database/index.d.ts +3 -0
  162. package/dist/types/src/blueprints/database/index.d.ts.map +1 -0
  163. package/dist/types/src/blueprints/discord/blueprint.d.ts +4 -0
  164. package/dist/types/src/blueprints/discord/blueprint.d.ts.map +1 -0
  165. package/dist/types/src/blueprints/discord/functions/definitions.d.ts +15 -0
  166. package/dist/types/src/blueprints/discord/functions/definitions.d.ts.map +1 -0
  167. package/dist/types/src/{functions/discord → blueprints/discord/functions}/fetch-messages.d.ts +3 -2
  168. package/dist/types/src/blueprints/discord/functions/fetch-messages.d.ts.map +1 -0
  169. package/dist/types/src/blueprints/discord/functions/fetch-messages.test.d.ts.map +1 -0
  170. package/dist/types/src/blueprints/discord/functions/index.d.ts +4 -0
  171. package/dist/types/src/blueprints/discord/functions/index.d.ts.map +1 -0
  172. package/dist/types/src/blueprints/discord/index.d.ts +2 -2
  173. package/dist/types/src/blueprints/discord/index.d.ts.map +1 -1
  174. package/dist/types/src/blueprints/github/functions/definitions.d.ts +7 -0
  175. package/dist/types/src/blueprints/github/functions/definitions.d.ts.map +1 -0
  176. package/dist/types/src/blueprints/github/functions/fetch-prs.d.ts +8 -0
  177. package/dist/types/src/blueprints/github/functions/fetch-prs.d.ts.map +1 -0
  178. package/dist/types/src/blueprints/github/functions/index.d.ts +4 -0
  179. package/dist/types/src/blueprints/github/functions/index.d.ts.map +1 -0
  180. package/dist/types/src/blueprints/github/index.d.ts +2 -0
  181. package/dist/types/src/blueprints/github/index.d.ts.map +1 -0
  182. package/dist/types/src/blueprints/index.d.ts +11 -6
  183. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  184. package/dist/types/src/blueprints/linear/blueprint.d.ts +4 -0
  185. package/dist/types/src/blueprints/linear/blueprint.d.ts.map +1 -0
  186. package/dist/types/src/blueprints/linear/functions/definitions.d.ts +6 -0
  187. package/dist/types/src/blueprints/linear/functions/definitions.d.ts.map +1 -0
  188. package/dist/types/src/blueprints/linear/functions/index.d.ts +4 -0
  189. package/dist/types/src/blueprints/linear/functions/index.d.ts.map +1 -0
  190. package/dist/types/src/blueprints/linear/functions/linear.test.d.ts.map +1 -0
  191. package/dist/types/src/blueprints/linear/functions/sync-issues.d.ts +10 -0
  192. package/dist/types/src/blueprints/linear/functions/sync-issues.d.ts.map +1 -0
  193. package/dist/types/src/blueprints/linear/index.d.ts +2 -2
  194. package/dist/types/src/blueprints/linear/index.d.ts.map +1 -1
  195. package/dist/types/src/blueprints/memory/blueprint.d.ts +4 -0
  196. package/dist/types/src/blueprints/memory/blueprint.d.ts.map +1 -0
  197. package/dist/types/src/blueprints/memory/blueprint.test.d.ts +2 -0
  198. package/dist/types/src/blueprints/memory/blueprint.test.d.ts.map +1 -0
  199. package/dist/types/src/blueprints/memory/functions/definitions.d.ts +17 -0
  200. package/dist/types/src/blueprints/memory/functions/definitions.d.ts.map +1 -0
  201. package/dist/types/src/blueprints/memory/functions/delete.d.ts +10 -0
  202. package/dist/types/src/blueprints/memory/functions/delete.d.ts.map +1 -0
  203. package/dist/types/src/blueprints/memory/functions/index.d.ts +4 -0
  204. package/dist/types/src/blueprints/memory/functions/index.d.ts.map +1 -0
  205. package/dist/types/src/blueprints/memory/functions/query.d.ts +8 -0
  206. package/dist/types/src/blueprints/memory/functions/query.d.ts.map +1 -0
  207. package/dist/types/src/blueprints/memory/functions/save.d.ts +8 -0
  208. package/dist/types/src/blueprints/memory/functions/save.d.ts.map +1 -0
  209. package/dist/types/src/blueprints/memory/index.d.ts +3 -0
  210. package/dist/types/src/blueprints/memory/index.d.ts.map +1 -0
  211. package/dist/types/src/blueprints/planning/blueprint.d.ts +4 -0
  212. package/dist/types/src/blueprints/planning/blueprint.d.ts.map +1 -0
  213. package/dist/types/src/blueprints/planning/functions/index.d.ts +4 -0
  214. package/dist/types/src/blueprints/planning/functions/index.d.ts.map +1 -0
  215. package/dist/types/src/blueprints/planning/functions/update-tasks.d.ts +24 -0
  216. package/dist/types/src/blueprints/planning/functions/update-tasks.d.ts.map +1 -0
  217. package/dist/types/src/blueprints/planning/functions/update-tasks.test.d.ts +2 -0
  218. package/dist/types/src/blueprints/planning/functions/update-tasks.test.d.ts.map +1 -0
  219. package/dist/types/src/blueprints/planning/index.d.ts +2 -2
  220. package/dist/types/src/blueprints/planning/index.d.ts.map +1 -1
  221. package/dist/types/src/blueprints/project/blueprint.d.ts +4 -0
  222. package/dist/types/src/blueprints/project/blueprint.d.ts.map +1 -0
  223. package/dist/types/src/blueprints/project/blueprint.test.d.ts +2 -0
  224. package/dist/types/src/blueprints/project/blueprint.test.d.ts.map +1 -0
  225. package/dist/types/src/blueprints/project/functions/add-artifact.d.ts +4 -0
  226. package/dist/types/src/blueprints/project/functions/add-artifact.d.ts.map +1 -0
  227. package/dist/types/src/blueprints/project/functions/agent.d.ts +4 -0
  228. package/dist/types/src/blueprints/project/functions/agent.d.ts.map +1 -0
  229. package/dist/types/src/blueprints/project/functions/definitions.d.ts +166 -0
  230. package/dist/types/src/blueprints/project/functions/definitions.d.ts.map +1 -0
  231. package/dist/types/src/blueprints/project/functions/get-context.d.ts +4 -0
  232. package/dist/types/src/blueprints/project/functions/get-context.d.ts.map +1 -0
  233. package/dist/types/src/blueprints/project/functions/index.d.ts +4 -0
  234. package/dist/types/src/blueprints/project/functions/index.d.ts.map +1 -0
  235. package/dist/types/src/blueprints/project/functions/qualifier.d.ts +77 -0
  236. package/dist/types/src/blueprints/project/functions/qualifier.d.ts.map +1 -0
  237. package/dist/types/src/blueprints/project/index.d.ts +3 -0
  238. package/dist/types/src/blueprints/project/index.d.ts.map +1 -0
  239. package/dist/types/src/blueprints/project-wizard/blueprint.d.ts +4 -0
  240. package/dist/types/src/blueprints/project-wizard/blueprint.d.ts.map +1 -0
  241. package/dist/types/src/blueprints/project-wizard/functions/create-project.d.ts +55 -0
  242. package/dist/types/src/blueprints/project-wizard/functions/create-project.d.ts.map +1 -0
  243. package/dist/types/src/blueprints/project-wizard/functions/definitions.d.ts +104 -0
  244. package/dist/types/src/blueprints/project-wizard/functions/definitions.d.ts.map +1 -0
  245. package/dist/types/src/blueprints/project-wizard/functions/index.d.ts +4 -0
  246. package/dist/types/src/blueprints/project-wizard/functions/index.d.ts.map +1 -0
  247. package/dist/types/src/blueprints/project-wizard/functions/project-rules.d.ts +4 -0
  248. package/dist/types/src/blueprints/project-wizard/functions/project-rules.d.ts.map +1 -0
  249. package/dist/types/src/blueprints/project-wizard/functions/sync-triggers.d.ts +52 -0
  250. package/dist/types/src/blueprints/project-wizard/functions/sync-triggers.d.ts.map +1 -0
  251. package/dist/types/src/blueprints/project-wizard/index.d.ts +3 -0
  252. package/dist/types/src/blueprints/project-wizard/index.d.ts.map +1 -0
  253. package/dist/types/src/blueprints/testing.d.ts +9 -5
  254. package/dist/types/src/blueprints/testing.d.ts.map +1 -1
  255. package/dist/types/src/blueprints/websearch/blueprint.d.ts +4 -0
  256. package/dist/types/src/blueprints/websearch/blueprint.d.ts.map +1 -0
  257. package/dist/types/src/blueprints/websearch/blueprint.test.d.ts +2 -0
  258. package/dist/types/src/blueprints/websearch/blueprint.test.d.ts.map +1 -0
  259. package/dist/types/src/blueprints/websearch/functions/definitions.d.ts +5 -0
  260. package/dist/types/src/blueprints/websearch/functions/definitions.d.ts.map +1 -0
  261. package/dist/types/src/blueprints/websearch/functions/fetch.d.ts +6 -0
  262. package/dist/types/src/blueprints/websearch/functions/fetch.d.ts.map +1 -0
  263. package/dist/types/src/blueprints/websearch/functions/index.d.ts +4 -0
  264. package/dist/types/src/blueprints/websearch/functions/index.d.ts.map +1 -0
  265. package/dist/types/src/blueprints/websearch/index.d.ts +3 -3
  266. package/dist/types/src/blueprints/websearch/index.d.ts.map +1 -1
  267. package/dist/types/src/blueprints/websearch/{websearch-toolkit.d.ts → toolkit.d.ts} +3 -1
  268. package/dist/types/src/blueprints/websearch/toolkit.d.ts.map +1 -0
  269. package/dist/types/src/crud/graph.d.ts +12 -11
  270. package/dist/types/src/crud/graph.d.ts.map +1 -1
  271. package/dist/types/src/errors.d.ts +41 -0
  272. package/dist/types/src/errors.d.ts.map +1 -0
  273. package/dist/types/src/functions/agent/definitions.d.ts +61 -0
  274. package/dist/types/src/functions/agent/definitions.d.ts.map +1 -0
  275. package/dist/types/src/functions/agent/index.d.ts +3 -4
  276. package/dist/types/src/functions/agent/index.d.ts.map +1 -1
  277. package/dist/types/src/functions/agent/prompt.d.ts +2 -7
  278. package/dist/types/src/functions/agent/prompt.d.ts.map +1 -1
  279. package/dist/types/src/functions/agent/prompt.test.d.ts +2 -0
  280. package/dist/types/src/functions/agent/prompt.test.d.ts.map +1 -0
  281. package/dist/types/src/functions/index.d.ts +0 -6
  282. package/dist/types/src/functions/index.d.ts.map +1 -1
  283. package/dist/types/src/index.d.ts +2 -2
  284. package/dist/types/src/index.d.ts.map +1 -1
  285. package/dist/types/src/sync/sync.d.ts +3 -4
  286. package/dist/types/src/sync/sync.d.ts.map +1 -1
  287. package/dist/types/src/testing/index.d.ts +2 -1
  288. package/dist/types/src/testing/index.d.ts.map +1 -1
  289. package/dist/types/src/testing/plugins.d.ts +19 -0
  290. package/dist/types/src/testing/plugins.d.ts.map +1 -0
  291. package/dist/types/src/toolkits/WebToolkit.d.ts +38 -0
  292. package/dist/types/src/toolkits/WebToolkit.d.ts.map +1 -0
  293. package/dist/types/src/toolkits/index.d.ts +1 -2
  294. package/dist/types/src/toolkits/index.d.ts.map +1 -1
  295. package/dist/types/src/types/Agent.d.ts +79 -0
  296. package/dist/types/src/types/Agent.d.ts.map +1 -0
  297. package/dist/types/src/types/Chat.d.ts +56 -0
  298. package/dist/types/src/types/Chat.d.ts.map +1 -0
  299. package/dist/types/src/types/McpServer.d.ts +21 -0
  300. package/dist/types/src/types/McpServer.d.ts.map +1 -0
  301. package/dist/types/src/types/Memory.d.ts +12 -0
  302. package/dist/types/src/types/Memory.d.ts.map +1 -0
  303. package/dist/types/src/types/Plan.d.ts +89 -0
  304. package/dist/types/src/types/Plan.d.ts.map +1 -0
  305. package/dist/types/src/types/index.d.ts +6 -0
  306. package/dist/types/src/types/index.d.ts.map +1 -0
  307. package/dist/types/src/util/graphql.d.ts.map +1 -1
  308. package/dist/types/tsconfig.tsbuildinfo +1 -1
  309. package/package.json +46 -41
  310. package/src/blueprints/automation/blueprint.ts +105 -0
  311. package/src/blueprints/automation/index.ts +5 -0
  312. package/src/blueprints/blueprint-manager/blueprint.conversations.json +1 -0
  313. package/src/blueprints/blueprint-manager/blueprint.test.ts +202 -0
  314. package/src/blueprints/blueprint-manager/blueprint.ts +49 -0
  315. package/src/blueprints/blueprint-manager/functions/definitions.ts +57 -0
  316. package/src/blueprints/blueprint-manager/functions/enable-blueprints.ts +43 -0
  317. package/src/blueprints/blueprint-manager/functions/index.ts +13 -0
  318. package/src/blueprints/blueprint-manager/functions/query-blueprints.ts +18 -0
  319. package/src/blueprints/blueprint-manager/functions/update-blueprints.ts +18 -0
  320. package/src/blueprints/blueprint-manager/index.ts +6 -0
  321. package/src/blueprints/browser/blueprint.test.ts +61 -0
  322. package/src/blueprints/browser/blueprint.ts +40 -0
  323. package/src/blueprints/browser/index.ts +5 -0
  324. package/src/blueprints/database/blueprint.conversations.json +1 -0
  325. package/src/blueprints/database/blueprint.test.ts +531 -0
  326. package/src/blueprints/database/blueprint.ts +66 -0
  327. package/src/blueprints/database/functions/context-add.ts +24 -0
  328. package/src/blueprints/database/functions/context-remove.ts +24 -0
  329. package/src/blueprints/database/functions/definitions.ts +318 -0
  330. package/src/blueprints/database/functions/index.ts +23 -0
  331. package/src/blueprints/database/functions/load.ts +19 -0
  332. package/src/blueprints/database/functions/object-create.ts +38 -0
  333. package/src/blueprints/database/functions/object-delete.ts +20 -0
  334. package/src/blueprints/database/functions/object-update.ts +30 -0
  335. package/src/blueprints/database/functions/query.ts +63 -0
  336. package/src/blueprints/database/functions/relation-create.ts +34 -0
  337. package/src/blueprints/database/functions/relation-delete.ts +21 -0
  338. package/src/blueprints/database/functions/schema-add.ts +28 -0
  339. package/src/blueprints/database/functions/schema-list.ts +33 -0
  340. package/src/blueprints/database/functions/tag-add.ts +21 -0
  341. package/src/blueprints/database/functions/tag-remove.ts +21 -0
  342. package/src/blueprints/database/index.ts +21 -0
  343. package/src/blueprints/discord/blueprint.ts +41 -0
  344. package/src/blueprints/discord/functions/definitions.ts +70 -0
  345. package/src/blueprints/discord/functions/fetch-messages.test.ts +50 -0
  346. package/src/blueprints/discord/functions/fetch-messages.ts +198 -0
  347. package/src/blueprints/discord/functions/index.ts +9 -0
  348. package/src/blueprints/discord/index.ts +2 -3
  349. package/src/blueprints/github/functions/definitions.ts +26 -0
  350. package/src/blueprints/github/functions/fetch-prs.ts +24 -0
  351. package/src/blueprints/github/functions/index.ts +9 -0
  352. package/src/blueprints/github/index.ts +5 -0
  353. package/src/blueprints/index.ts +11 -6
  354. package/src/blueprints/linear/blueprint.ts +42 -0
  355. package/src/blueprints/linear/functions/definitions.ts +23 -0
  356. package/src/blueprints/linear/functions/index.ts +9 -0
  357. package/src/blueprints/linear/functions/linear.test.ts +57 -0
  358. package/src/{functions/linear → blueprints/linear/functions}/sync-issues.ts +40 -47
  359. package/src/blueprints/linear/index.ts +2 -3
  360. package/src/blueprints/memory/blueprint.conversations.json +1 -0
  361. package/src/blueprints/memory/blueprint.test.ts +139 -0
  362. package/src/blueprints/memory/blueprint.ts +41 -0
  363. package/src/blueprints/memory/functions/definitions.ts +68 -0
  364. package/src/blueprints/memory/functions/delete.ts +20 -0
  365. package/src/blueprints/memory/functions/index.ts +13 -0
  366. package/src/blueprints/memory/functions/query.ts +32 -0
  367. package/src/blueprints/memory/functions/save.ts +20 -0
  368. package/src/blueprints/memory/index.ts +6 -0
  369. package/src/blueprints/planning/blueprint.ts +24 -0
  370. package/src/blueprints/planning/functions/index.ts +9 -0
  371. package/src/blueprints/planning/functions/update-tasks.md +116 -0
  372. package/src/blueprints/planning/functions/update-tasks.test.ts +55 -0
  373. package/src/blueprints/planning/functions/update-tasks.ts +67 -0
  374. package/src/blueprints/planning/index.ts +3 -4
  375. package/src/blueprints/project/blueprint.conversations.json +1 -0
  376. package/src/blueprints/project/blueprint.test.ts +712 -0
  377. package/src/blueprints/project/blueprint.ts +64 -0
  378. package/src/blueprints/project/functions/add-artifact.ts +31 -0
  379. package/src/blueprints/project/functions/agent.ts +69 -0
  380. package/src/blueprints/project/functions/definitions.ts +92 -0
  381. package/src/blueprints/project/functions/get-context.ts +47 -0
  382. package/src/blueprints/project/functions/index.ts +14 -0
  383. package/src/blueprints/project/functions/qualifier.ts +90 -0
  384. package/src/blueprints/project/index.ts +6 -0
  385. package/src/blueprints/project-wizard/blueprint.ts +52 -0
  386. package/src/blueprints/project-wizard/functions/create-project.ts +32 -0
  387. package/src/blueprints/project-wizard/functions/definitions.ts +63 -0
  388. package/src/blueprints/project-wizard/functions/index.ts +13 -0
  389. package/src/blueprints/project-wizard/functions/project-rules.ts +77 -0
  390. package/src/blueprints/project-wizard/functions/sync-triggers.ts +153 -0
  391. package/src/blueprints/project-wizard/index.ts +6 -0
  392. package/src/blueprints/testing.ts +29 -8
  393. package/src/blueprints/websearch/blueprint.conversations.json +1 -0
  394. package/src/blueprints/websearch/blueprint.test.ts +39 -0
  395. package/src/blueprints/websearch/blueprint.ts +30 -0
  396. package/src/blueprints/websearch/functions/definitions.ts +25 -0
  397. package/src/blueprints/websearch/functions/fetch.ts +18 -0
  398. package/src/blueprints/websearch/functions/index.ts +9 -0
  399. package/src/blueprints/websearch/index.ts +3 -4
  400. package/src/blueprints/websearch/{websearch-toolkit.ts → toolkit.ts} +6 -1
  401. package/src/crud/graph.test.ts +13 -38
  402. package/src/crud/graph.ts +138 -142
  403. package/src/errors.ts +25 -0
  404. package/src/functions/READ_THIS.md +5 -0
  405. package/src/functions/agent/definitions.ts +56 -0
  406. package/src/functions/agent/index.ts +3 -5
  407. package/src/functions/agent/prompt.conversations.json +1 -0
  408. package/src/functions/agent/prompt.test.ts +78 -0
  409. package/src/functions/agent/prompt.ts +212 -102
  410. package/src/functions/index.ts +0 -6
  411. package/src/index.ts +2 -2
  412. package/src/sync/sync.ts +52 -34
  413. package/src/testing/index.ts +2 -1
  414. package/src/testing/plugins.tsx +79 -0
  415. package/src/toolkits/WebToolkit.ts +33 -0
  416. package/src/toolkits/index.ts +1 -2
  417. package/src/types/Agent.ts +239 -0
  418. package/src/types/Chat.ts +63 -0
  419. package/src/types/McpServer.ts +37 -0
  420. package/src/types/Memory.ts +24 -0
  421. package/src/types/Plan.ts +111 -0
  422. package/src/types/index.ts +9 -0
  423. package/dist/lib/browser/index.mjs +0 -2778
  424. package/dist/lib/browser/index.mjs.map +0 -7
  425. package/dist/lib/browser/meta.json +0 -1
  426. package/dist/lib/node-esm/index.mjs +0 -2779
  427. package/dist/lib/node-esm/index.mjs.map +0 -7
  428. package/dist/lib/node-esm/meta.json +0 -1
  429. package/dist/types/src/blueprints/design/design-blueprint.d.ts +0 -4
  430. package/dist/types/src/blueprints/design/design-blueprint.d.ts.map +0 -1
  431. package/dist/types/src/blueprints/design/design-blueprint.test.d.ts +0 -2
  432. package/dist/types/src/blueprints/design/design-blueprint.test.d.ts.map +0 -1
  433. package/dist/types/src/blueprints/design/index.d.ts +0 -3
  434. package/dist/types/src/blueprints/design/index.d.ts.map +0 -1
  435. package/dist/types/src/blueprints/discord/discord-blueprint.d.ts +0 -19
  436. package/dist/types/src/blueprints/discord/discord-blueprint.d.ts.map +0 -1
  437. package/dist/types/src/blueprints/linear/linear-blueprint.d.ts +0 -19
  438. package/dist/types/src/blueprints/linear/linear-blueprint.d.ts.map +0 -1
  439. package/dist/types/src/blueprints/planning/planning-blueprint.d.ts +0 -4
  440. package/dist/types/src/blueprints/planning/planning-blueprint.d.ts.map +0 -1
  441. package/dist/types/src/blueprints/planning/planning-blueprint.test.d.ts +0 -2
  442. package/dist/types/src/blueprints/planning/planning-blueprint.test.d.ts.map +0 -1
  443. package/dist/types/src/blueprints/research/index.d.ts +0 -3
  444. package/dist/types/src/blueprints/research/index.d.ts.map +0 -1
  445. package/dist/types/src/blueprints/research/research-blueprint.d.ts +0 -4
  446. package/dist/types/src/blueprints/research/research-blueprint.d.ts.map +0 -1
  447. package/dist/types/src/blueprints/research/research-blueprint.test.d.ts +0 -2
  448. package/dist/types/src/blueprints/research/research-blueprint.test.d.ts.map +0 -1
  449. package/dist/types/src/blueprints/websearch/websearch-blueprint.d.ts +0 -4
  450. package/dist/types/src/blueprints/websearch/websearch-blueprint.d.ts.map +0 -1
  451. package/dist/types/src/blueprints/websearch/websearch-toolkit.d.ts.map +0 -1
  452. package/dist/types/src/experimental/feed.test.d.ts +0 -2
  453. package/dist/types/src/experimental/feed.test.d.ts.map +0 -1
  454. package/dist/types/src/functions/discord/fetch-messages.d.ts.map +0 -1
  455. package/dist/types/src/functions/discord/fetch-messages.test.d.ts.map +0 -1
  456. package/dist/types/src/functions/discord/index.d.ts +0 -12
  457. package/dist/types/src/functions/discord/index.d.ts.map +0 -1
  458. package/dist/types/src/functions/document/index.d.ts +0 -13
  459. package/dist/types/src/functions/document/index.d.ts.map +0 -1
  460. package/dist/types/src/functions/document/read.d.ts +0 -7
  461. package/dist/types/src/functions/document/read.d.ts.map +0 -1
  462. package/dist/types/src/functions/document/update.d.ts +0 -6
  463. package/dist/types/src/functions/document/update.d.ts.map +0 -1
  464. package/dist/types/src/functions/entity-extraction/entity-extraction.d.ts +0 -172
  465. package/dist/types/src/functions/entity-extraction/entity-extraction.d.ts.map +0 -1
  466. package/dist/types/src/functions/entity-extraction/entity-extraction.test.d.ts +0 -2
  467. package/dist/types/src/functions/entity-extraction/entity-extraction.test.d.ts.map +0 -1
  468. package/dist/types/src/functions/entity-extraction/index.d.ts +0 -173
  469. package/dist/types/src/functions/entity-extraction/index.d.ts.map +0 -1
  470. package/dist/types/src/functions/exa/exa.d.ts +0 -5
  471. package/dist/types/src/functions/exa/exa.d.ts.map +0 -1
  472. package/dist/types/src/functions/exa/index.d.ts +0 -3
  473. package/dist/types/src/functions/exa/index.d.ts.map +0 -1
  474. package/dist/types/src/functions/exa/mock.d.ts +0 -5
  475. package/dist/types/src/functions/exa/mock.d.ts.map +0 -1
  476. package/dist/types/src/functions/github/fetch-prs.d.ts +0 -6
  477. package/dist/types/src/functions/github/fetch-prs.d.ts.map +0 -1
  478. package/dist/types/src/functions/linear/index.d.ts +0 -9
  479. package/dist/types/src/functions/linear/index.d.ts.map +0 -1
  480. package/dist/types/src/functions/linear/linear.test.d.ts.map +0 -1
  481. package/dist/types/src/functions/linear/sync-issues.d.ts +0 -12
  482. package/dist/types/src/functions/linear/sync-issues.d.ts.map +0 -1
  483. package/dist/types/src/functions/research/document-create.d.ts +0 -9
  484. package/dist/types/src/functions/research/document-create.d.ts.map +0 -1
  485. package/dist/types/src/functions/research/index.d.ts +0 -21
  486. package/dist/types/src/functions/research/index.d.ts.map +0 -1
  487. package/dist/types/src/functions/research/research-graph.d.ts +0 -18
  488. package/dist/types/src/functions/research/research-graph.d.ts.map +0 -1
  489. package/dist/types/src/functions/research/research.d.ts +0 -14
  490. package/dist/types/src/functions/research/research.d.ts.map +0 -1
  491. package/dist/types/src/functions/research/research.test.d.ts +0 -2
  492. package/dist/types/src/functions/research/research.test.d.ts.map +0 -1
  493. package/dist/types/src/functions/research/types.d.ts +0 -6
  494. package/dist/types/src/functions/research/types.d.ts.map +0 -1
  495. package/dist/types/src/functions/tasks/index.d.ts +0 -15
  496. package/dist/types/src/functions/tasks/index.d.ts.map +0 -1
  497. package/dist/types/src/functions/tasks/read.d.ts +0 -7
  498. package/dist/types/src/functions/tasks/read.d.ts.map +0 -1
  499. package/dist/types/src/functions/tasks/task-list.d.ts +0 -74
  500. package/dist/types/src/functions/tasks/task-list.d.ts.map +0 -1
  501. package/dist/types/src/functions/tasks/task-list.test.d.ts +0 -2
  502. package/dist/types/src/functions/tasks/task-list.test.d.ts.map +0 -1
  503. package/dist/types/src/functions/tasks/update.d.ts +0 -9
  504. package/dist/types/src/functions/tasks/update.d.ts.map +0 -1
  505. package/dist/types/src/plugins.d.ts +0 -19
  506. package/dist/types/src/plugins.d.ts.map +0 -1
  507. package/dist/types/src/testing/data/exa-search-1748337321991.d.ts +0 -38
  508. package/dist/types/src/testing/data/exa-search-1748337321991.d.ts.map +0 -1
  509. package/dist/types/src/testing/data/exa-search-1748337331526.d.ts +0 -37
  510. package/dist/types/src/testing/data/exa-search-1748337331526.d.ts.map +0 -1
  511. package/dist/types/src/testing/data/exa-search-1748337344119.d.ts +0 -58
  512. package/dist/types/src/testing/data/exa-search-1748337344119.d.ts.map +0 -1
  513. package/dist/types/src/testing/data/index.d.ts +0 -3
  514. package/dist/types/src/testing/data/index.d.ts.map +0 -1
  515. package/dist/types/src/toolkits/AssistantToolkit.d.ts +0 -17
  516. package/dist/types/src/toolkits/AssistantToolkit.d.ts.map +0 -1
  517. package/dist/types/src/toolkits/AssistantToolkit.test.d.ts +0 -2
  518. package/dist/types/src/toolkits/AssistantToolkit.test.d.ts.map +0 -1
  519. package/dist/types/src/toolkits/SystemToolkit.d.ts +0 -67
  520. package/dist/types/src/toolkits/SystemToolkit.d.ts.map +0 -1
  521. package/src/blueprints/design/design-blueprint.test.ts +0 -103
  522. package/src/blueprints/design/design-blueprint.ts +0 -33
  523. package/src/blueprints/design/index.ts +0 -7
  524. package/src/blueprints/discord/discord-blueprint.ts +0 -34
  525. package/src/blueprints/linear/linear-blueprint.ts +0 -35
  526. package/src/blueprints/planning/planning-blueprint.test.ts +0 -124
  527. package/src/blueprints/planning/planning-blueprint.ts +0 -98
  528. package/src/blueprints/research/index.ts +0 -7
  529. package/src/blueprints/research/research-blueprint.test.ts +0 -7
  530. package/src/blueprints/research/research-blueprint.ts +0 -53
  531. package/src/blueprints/websearch/websearch-blueprint.ts +0 -20
  532. package/src/experimental/feed.test.ts +0 -111
  533. package/src/functions/discord/fetch-messages.test.ts +0 -58
  534. package/src/functions/discord/fetch-messages.ts +0 -252
  535. package/src/functions/discord/index.ts +0 -9
  536. package/src/functions/document/index.ts +0 -12
  537. package/src/functions/document/read.ts +0 -29
  538. package/src/functions/document/update.ts +0 -30
  539. package/src/functions/entity-extraction/entity-extraction.conversations.json +0 -1
  540. package/src/functions/entity-extraction/entity-extraction.test.ts +0 -92
  541. package/src/functions/entity-extraction/entity-extraction.ts +0 -164
  542. package/src/functions/entity-extraction/index.ts +0 -9
  543. package/src/functions/exa/exa.ts +0 -37
  544. package/src/functions/exa/index.ts +0 -6
  545. package/src/functions/exa/mock.ts +0 -71
  546. package/src/functions/github/fetch-prs.ts +0 -30
  547. package/src/functions/linear/index.ts +0 -9
  548. package/src/functions/linear/linear.test.ts +0 -83
  549. package/src/functions/research/document-create.ts +0 -75
  550. package/src/functions/research/index.ts +0 -14
  551. package/src/functions/research/research-graph.ts +0 -49
  552. package/src/functions/research/research-instructions.tpl +0 -106
  553. package/src/functions/research/research.conversations.json +0 -1
  554. package/src/functions/research/research.test.ts +0 -179
  555. package/src/functions/research/research.ts +0 -190
  556. package/src/functions/research/types.ts +0 -26
  557. package/src/functions/tasks/index.ts +0 -11
  558. package/src/functions/tasks/read.ts +0 -34
  559. package/src/functions/tasks/task-list.test.ts +0 -99
  560. package/src/functions/tasks/task-list.ts +0 -165
  561. package/src/functions/tasks/update.ts +0 -52
  562. package/src/plugins.tsx +0 -68
  563. package/src/testing/data/exa-search-1748337321991.ts +0 -131
  564. package/src/testing/data/exa-search-1748337331526.ts +0 -144
  565. package/src/testing/data/exa-search-1748337344119.ts +0 -133
  566. package/src/testing/data/index.ts +0 -11
  567. package/src/toolkits/AssistantToolkit.conversations.json +0 -1
  568. package/src/toolkits/AssistantToolkit.test.ts +0 -88
  569. package/src/toolkits/AssistantToolkit.ts +0 -47
  570. package/src/toolkits/SystemToolkit.ts +0 -231
  571. /package/dist/types/src/{functions/discord → blueprints/discord/functions}/fetch-messages.test.d.ts +0 -0
  572. /package/dist/types/src/{functions/linear → blueprints/linear/functions}/linear.test.d.ts +0 -0
package/src/crud/graph.ts CHANGED
@@ -11,7 +11,8 @@ import * as Option from 'effect/Option';
11
11
  import * as Schema from 'effect/Schema';
12
12
  import * as SchemaAST from 'effect/SchemaAST';
13
13
 
14
- import { Entity, Filter, Obj, Query, Type } from '@dxos/echo';
14
+ import { Database, Entity, Feed, Filter, Obj, Query, Type } from '@dxos/echo';
15
+ import { isEncodedReference } from '@dxos/echo-protocol';
15
16
  import {
16
17
  ReferenceAnnotationId,
17
18
  RelationSourceDXNId,
@@ -22,10 +23,7 @@ import {
22
23
  getTypeAnnotation,
23
24
  getTypeIdentifierAnnotation,
24
25
  } from '@dxos/echo/internal';
25
- import { type EchoDatabase, type Queue } from '@dxos/echo-db';
26
- import { isEncodedReference } from '@dxos/echo-protocol';
27
26
  import { mapAst } from '@dxos/effect';
28
- import { ContextQueueService, DatabaseService } from '@dxos/functions';
29
27
  import { DXN, ObjectId } from '@dxos/keys';
30
28
  import { log } from '@dxos/log';
31
29
  import { deepMapValues, isNonNullable, trim } from '@dxos/util';
@@ -39,7 +37,7 @@ export const Subgraph = Schema.Struct({
39
37
  export interface Subgraph extends Schema.Schema.Type<typeof Subgraph> {}
40
38
 
41
39
  export type RelatedSchema = {
42
- schema: Schema.Schema.AnyNoContext;
40
+ schema: Type.AnyEntity;
43
41
  kind: 'reference' | 'relation';
44
42
  };
45
43
 
@@ -50,12 +48,9 @@ export type RelatedSchema = {
50
48
  * @param schema
51
49
  * @returns
52
50
  */
53
- export const findRelatedSchema = async (
54
- db: EchoDatabase,
55
- anchor: Schema.Schema.AnyNoContext,
56
- ): Promise<RelatedSchema[]> => {
51
+ export const findRelatedSchema = async (db: Database.Database, anchor: Type.AnyEntity): Promise<RelatedSchema[]> => {
57
52
  // TODO(dmaretskyi): Query stored schemas.
58
- const allSchemas = [...db.graph.schemaRegistry.schemas];
53
+ const allSchemas = await db.graph.schemaRegistry.query().run();
59
54
 
60
55
  // TODO(dmaretskyi): Also do references.
61
56
  return allSchemas
@@ -65,14 +60,14 @@ export const findRelatedSchema = async (
65
60
  }
66
61
 
67
62
  return (
68
- isSchemaAddressableByDxn(anchor, DXN.parse(getTypeAnnotation(schema)!.sourceSchema!)) ||
69
- isSchemaAddressableByDxn(anchor, DXN.parse(getTypeAnnotation(schema)!.targetSchema!))
63
+ isSchemaAddressableByDXN(anchor, DXN.parse(getTypeAnnotation(schema)!.sourceSchema!)) ||
64
+ isSchemaAddressableByDXN(anchor, DXN.parse(getTypeAnnotation(schema)!.targetSchema!))
70
65
  );
71
66
  })
72
67
  .map(
73
68
  (schema): RelatedSchema => ({
74
- schema,
75
69
  kind: 'relation',
70
+ schema,
76
71
  }),
77
72
  );
78
73
  };
@@ -81,7 +76,7 @@ export const findRelatedSchema = async (
81
76
  * Non-strict DXN comparison.
82
77
  * Returns true if the DXN could be resolved to the schema.
83
78
  */
84
- const isSchemaAddressableByDxn = (schema: Schema.Schema.AnyNoContext, dxn: DXN): boolean => {
79
+ const isSchemaAddressableByDXN = (schema: Type.AnyEntity, dxn: DXN): boolean => {
85
80
  if (getTypeIdentifierAnnotation(schema) === dxn.toString()) {
86
81
  return true;
87
82
  }
@@ -108,20 +103,20 @@ export const LocalSearchToolkit = Toolkit.make(
108
103
  },
109
104
  success: Schema.Unknown,
110
105
  failure: Schema.Never,
111
- dependencies: [DatabaseService],
106
+ dependencies: [Database.Service, Feed.FeedService],
112
107
  }),
113
108
  );
114
109
 
115
110
  export const LocalSearchHandler = LocalSearchToolkit.toLayer({
116
111
  search_local_search: Effect.fn(function* ({ query }) {
117
- const { objects } = yield* DatabaseService.runQuery(Query.select(Filter.text(query, { type: 'vector' })));
112
+ const objects = yield* Database.runQuery(Query.select(Filter.text(query, { type: 'vector' })));
118
113
  const results = [...objects];
119
114
 
120
- const option = yield* Effect.serviceOption(ContextQueueService);
121
- if (Option.isSome(option)) {
122
- const queueObjects = yield* Effect.promise(() => option.value.queue.queryObjects());
123
- // TODO(dmaretskyi): Text search on the queue.
124
- results.push(...queueObjects);
115
+ const feedOption = yield* Effect.serviceOption(Feed.ContextFeedService);
116
+ if (Option.isSome(feedOption)) {
117
+ const feedObjects = yield* Feed.runQuery(feedOption.value.feed, Filter.everything());
118
+ // TODO(dmaretskyi): Text search on the feed.
119
+ results.push(...feedObjects);
125
120
  }
126
121
 
127
122
  return trim`
@@ -138,21 +133,21 @@ export const LocalSearchHandler = LocalSearchToolkit.toLayer({
138
133
  class GraphWriterSchema extends Context.Tag('@dxos/assistant/GraphWriterSchema')<
139
134
  GraphWriterSchema,
140
135
  {
141
- schema: Schema.Schema.AnyNoContext[];
136
+ schema: Type.AnyEntity[];
142
137
  }
143
138
  >() {}
144
139
 
145
140
  /**
146
141
  * Forms typed objects that can be written to the graph database.
147
142
  */
148
- export const makeGraphWriterToolkit = ({ schema }: { schema: Schema.Schema.AnyNoContext[] }) => {
143
+ export const makeGraphWriterToolkit = ({ schema }: { schema: Type.AnyEntity[] }) => {
149
144
  return Toolkit.make(
150
145
  Tool.make('graph_writer', {
151
146
  description: 'Write to the local graph database',
152
147
  parameters: createExtractionSchema(schema).fields,
153
148
  success: Schema.Unknown,
154
149
  failure: Schema.Never,
155
- dependencies: [DatabaseService, ContextQueueService],
150
+ dependencies: [Database.Service, Feed.ContextFeedService, Feed.FeedService],
156
151
  }).annotateContext(Context.make(GraphWriterSchema, { schema })),
157
152
  );
158
153
  };
@@ -172,10 +167,10 @@ export const makeGraphWriterHandler = (
172
167
 
173
168
  return toolkit.toLayer({
174
169
  graph_writer: Effect.fn(function* (input) {
175
- const { db } = yield* DatabaseService;
176
- const { queue } = yield* ContextQueueService;
177
- const data = yield* Effect.promise(() => sanitizeObjects(schema, input as any, db, queue));
178
- yield* Effect.promise(() => queue.append(data as Obj.Any[]));
170
+ const { db } = yield* Database.Service;
171
+ const { feed } = yield* Feed.ContextFeedService;
172
+ const data = yield* sanitizeObjects(schema, input as any, db, feed);
173
+ yield* Feed.append(feed, data as Obj.Unknown[]);
179
174
 
180
175
  const dxns = data.map((obj) => Obj.getDXN(obj));
181
176
  onAppend?.(dxns);
@@ -187,7 +182,7 @@ export const makeGraphWriterHandler = (
187
182
  /**
188
183
  * Create a schema for structured data extraction.
189
184
  */
190
- export const createExtractionSchema = (types: Schema.Schema.AnyNoContext[]) => {
185
+ export const createExtractionSchema = (types: Type.AnyEntity[]) => {
191
186
  return Schema.Struct({
192
187
  ...Object.fromEntries(
193
188
  types.map(preprocessSchema).map((schema, index) => [
@@ -200,139 +195,140 @@ export const createExtractionSchema = (types: Schema.Schema.AnyNoContext[]) => {
200
195
  });
201
196
  };
202
197
 
203
- export const getSanitizedSchemaName = (schema: Schema.Schema.AnyNoContext) => {
198
+ export const getSanitizedSchemaName = (schema: Type.AnyEntity) => {
204
199
  return Type.getDXN(schema)!
205
200
  .asTypeDXN()!
206
201
  .type.replaceAll(/[^a-zA-Z0-9]+/g, '_');
207
202
  };
208
203
 
209
- export const sanitizeObjects = async (
210
- types: Schema.Schema.AnyNoContext[],
204
+ export const sanitizeObjects = (
205
+ types: Type.AnyEntity[],
211
206
  data: Record<string, readonly unknown[]>,
212
- db: EchoDatabase,
213
- queue?: Queue,
214
- ): Promise<Obj.Any[]> => {
215
- const entries = types
216
- .map(
217
- (type) =>
218
- data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
219
- data: object,
220
- schema: type,
221
- })) ?? [],
222
- )
223
- .flat();
224
-
225
- const idMap = new Map<string, string>();
226
- const existingIds = new Set<ObjectId>();
227
- const enitties = new Map<ObjectId, Entity.Unknown>();
228
-
229
- const resolveId = (id: string): DXN | undefined => {
230
- if (ObjectId.isValid(id)) {
231
- existingIds.add(id);
232
- return DXN.fromLocalObjectId(id);
233
- }
207
+ db: Database.Database,
208
+ feed?: Feed.Feed,
209
+ ): Effect.Effect<Obj.Unknown[], never, Feed.FeedService> =>
210
+ Effect.gen(function* () {
211
+ const entries = types
212
+ .map(
213
+ (type) =>
214
+ data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
215
+ data: object,
216
+ schema: type,
217
+ })) ?? [],
218
+ )
219
+ .flat();
220
+
221
+ const idMap = new Map<string, string>();
222
+ const existingIds = new Set<ObjectId>();
223
+ const enitties = new Map<ObjectId, Entity.Unknown>();
224
+
225
+ const resolveId = (id: string): DXN | undefined => {
226
+ if (ObjectId.isValid(id)) {
227
+ existingIds.add(id);
228
+ return DXN.fromLocalObjectId(id);
229
+ }
234
230
 
235
- const mappedId = idMap.get(id);
236
- if (mappedId) {
237
- return DXN.fromLocalObjectId(mappedId);
238
- }
231
+ const mappedId = idMap.get(id);
232
+ if (mappedId) {
233
+ return DXN.fromLocalObjectId(mappedId);
234
+ }
239
235
 
240
- return undefined;
241
- };
236
+ return undefined;
237
+ };
242
238
 
243
- const res = entries
244
- .map((entry) => {
245
- // This entry mutates existing object.
246
- if (ObjectId.isValid(entry.data.id)) {
239
+ const res = entries
240
+ .map((entry) => {
241
+ // This entry mutates existing object.
242
+ if (ObjectId.isValid(entry.data.id)) {
243
+ return entry;
244
+ }
245
+
246
+ idMap.set(entry.data.id, ObjectId.random());
247
+ entry.data.id = idMap.get(entry.data.id);
247
248
  return entry;
248
- }
249
+ })
250
+ .map((entry) => {
251
+ const data = deepMapValues(entry.data, (value, recurse) => {
252
+ if (isEncodedReference(value)) {
253
+ const ref = value['/'];
254
+ const id = resolveId(ref);
255
+
256
+ if (id) {
257
+ // Link to an existing object.
258
+ return { '/': id.toString() };
259
+ } else {
260
+ // Search URIs?
261
+ return { '/': `search:?q=${encodeURIComponent(ref)}` };
262
+ }
263
+ }
249
264
 
250
- idMap.set(entry.data.id, ObjectId.random());
251
- entry.data.id = idMap.get(entry.data.id);
252
- return entry;
253
- })
254
- .map((entry) => {
255
- const data = deepMapValues(entry.data, (value, recurse) => {
256
- if (isEncodedReference(value)) {
257
- const ref = value['/'];
258
- const id = resolveId(ref);
259
-
260
- if (id) {
261
- // Link to an existing object.
262
- return { '/': id.toString() };
263
- } else {
264
- // Search URIs?
265
- return { '/': `search:?q=${encodeURIComponent(ref)}` };
265
+ return recurse(value);
266
+ });
267
+
268
+ if (Entity.getKind(entry.schema) === 'relation') {
269
+ const sourceDXN = resolveId(data.source);
270
+ if (!sourceDXN) {
271
+ log.warn('source not found', { source: data.source });
266
272
  }
273
+ const targetDXN = resolveId(data.target);
274
+ if (!targetDXN) {
275
+ log.warn('target not found', { target: data.target });
276
+ }
277
+ delete data.source;
278
+ delete data.target;
279
+ data[RelationSourceDXNId] = sourceDXN;
280
+ data[RelationTargetDXNId] = targetDXN;
267
281
  }
268
282
 
269
- return recurse(value);
270
- });
283
+ return {
284
+ data,
285
+ schema: entry.schema,
286
+ };
287
+ })
288
+ .filter((object) => !existingIds.has(object.data.id)); // TODO(dmaretskyi): This dissallows updating existing objects.
289
+
290
+ // TODO(dmaretskyi): Use ref resolver.
291
+ const dbObjects = yield* Effect.promise(() => db.query(Query.select(Filter.id(...existingIds))).run());
292
+ const feedObjects = feed && existingIds.size > 0 ? yield* Feed.runQuery(feed, Filter.id(...existingIds)) : [];
293
+ const objects = [...dbObjects, ...feedObjects].filter(isNonNullable);
294
+
295
+ // TODO(dmaretskyi): Returns everything if IDs are empty!
296
+ log.info('objects', { dbObjects, feedObjects, existingIds });
297
+ const missing = Array.from(existingIds).filter((id) => !objects.some((object) => object.id === id));
298
+ if (missing.length > 0) {
299
+ throw new Error(`Object IDs do not point to existing objects: ${missing.join(', ')}`);
300
+ }
271
301
 
272
- if (Entity.getKind(entry.schema) === 'relation') {
273
- const sourceDxn = resolveId(data.source);
274
- if (!sourceDxn) {
275
- log.warn('source not found', { source: data.source });
302
+ return res.flatMap(({ data, schema }) => {
303
+ let skip = false;
304
+ if (RelationSourceDXNId in data) {
305
+ const id = (data[RelationSourceDXNId] as DXN).asEchoDXN()?.echoId;
306
+ const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
307
+ if (obj) {
308
+ delete data[RelationSourceDXNId];
309
+ data[RelationSourceId] = obj;
310
+ } else {
311
+ skip = true;
276
312
  }
277
- const targetDxn = resolveId(data.target);
278
- if (!targetDxn) {
279
- log.warn('target not found', { target: data.target });
280
- }
281
- delete data.source;
282
- delete data.target;
283
- data[RelationSourceDXNId] = sourceDxn;
284
- data[RelationTargetDXNId] = targetDxn;
285
313
  }
286
-
287
- return {
288
- data,
289
- schema: entry.schema,
290
- };
291
- })
292
- .filter((object) => !existingIds.has(object.data.id)); // TODO(dmaretskyi): This dissallows updating existing objects.
293
-
294
- // TODO(dmaretskyi): Use ref resolver.
295
- const { objects: dbObjects } = await db.query(Query.select(Filter.ids(...existingIds))).run();
296
- const queueObjects = (await queue?.getObjectsById([...existingIds])) ?? [];
297
- const objects = [...dbObjects, ...queueObjects].filter(isNonNullable);
298
-
299
- // TODO(dmaretskyi): Returns everything if IDs are empty!
300
- log.info('objects', { dbObjects, queueObjects, existingIds });
301
- const missing = Array.from(existingIds).filter((id) => !objects.some((object) => object.id === id));
302
- if (missing.length > 0) {
303
- throw new Error(`Object IDs do not point to existing objects: ${missing.join(', ')}`);
304
- }
305
-
306
- return res.flatMap(({ data, schema }) => {
307
- let skip = false;
308
- if (RelationSourceDXNId in data) {
309
- const id = (data[RelationSourceDXNId] as DXN).asEchoDXN()?.echoId;
310
- const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
311
- if (obj) {
312
- delete data[RelationSourceDXNId];
313
- data[RelationSourceId] = obj;
314
- } else {
315
- skip = true;
314
+ if (RelationTargetDXNId in data) {
315
+ const id = (data[RelationTargetDXNId] as DXN).asEchoDXN()?.echoId;
316
+ const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
317
+ if (obj) {
318
+ delete data[RelationTargetDXNId];
319
+ data[RelationTargetId] = obj;
320
+ } else {
321
+ skip = true;
322
+ }
316
323
  }
317
- }
318
- if (RelationTargetDXNId in data) {
319
- const id = (data[RelationTargetDXNId] as DXN).asEchoDXN()?.echoId;
320
- const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
321
- if (obj) {
322
- delete data[RelationTargetDXNId];
323
- data[RelationTargetId] = obj;
324
- } else {
325
- skip = true;
324
+ if (!skip) {
325
+ const obj = createObject(schema, data);
326
+ enitties.set(obj.id, obj);
327
+ return [obj];
326
328
  }
327
- }
328
- if (!skip) {
329
- const obj = createObject(schema, data);
330
- enitties.set(obj.id, obj);
331
- return [obj];
332
- }
333
- return [];
329
+ return [];
330
+ });
334
331
  });
335
- };
336
332
 
337
333
  const SoftRef = Schema.Struct({
338
334
  '/': Schema.String,
package/src/errors.ts ADDED
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { BaseError } from '@dxos/errors';
6
+ import { DXN } from '@dxos/keys';
7
+
8
+ /**
9
+ * Agent could not execute prompt.
10
+ */
11
+ export class PromptError extends BaseError.extend('PromptError') {
12
+ constructor(
13
+ message: string,
14
+ context: {
15
+ description?: string;
16
+ prompt?: DXN.String;
17
+ chat?: DXN.String;
18
+ },
19
+ ) {
20
+ super({
21
+ message,
22
+ context,
23
+ });
24
+ }
25
+ }
@@ -0,0 +1,5 @@
1
+ ###
2
+
3
+ Can we move all functions into the corresponding blueprint folder?
4
+
5
+ ###
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { AiService, OpaqueToolkit, ModelName } from '@dxos/ai';
8
+ import { Routine, Trace, Operation, OperationRegistry } from '@dxos/compute';
9
+ import { Database, Feed, Ref } from '@dxos/echo';
10
+ import { Text } from '@dxos/schema';
11
+
12
+ import * as Chat from '../../types/Chat';
13
+
14
+ // TODO(dmaretskyi): Rename to RunRoutine.
15
+ export const AgentPrompt = Operation.make({
16
+ meta: {
17
+ key: 'org.dxos.function.prompt',
18
+ name: 'Run Routine',
19
+ description: 'Agentic worker that executes a provided prompt using blueprints and tools.',
20
+ },
21
+ input: Schema.Struct({
22
+ prompt: Ref.Ref(Routine.Routine),
23
+
24
+ /**
25
+ * When set, runs in this chat (history, queue, and bound context). Routine blueprints and context objects are merged into the conversation for this request.
26
+ */
27
+ chat: Schema.optional(Ref.Ref(Chat.Chat)),
28
+
29
+ /**
30
+ * @default @anthropic/claude-opus-4-6
31
+ */
32
+ model: Schema.optional(ModelName),
33
+
34
+ /**
35
+ * Input object or data.
36
+ * References get auto-resolved.
37
+ */
38
+ input: Schema.Any.pipe(Schema.annotations({ title: 'Input' })),
39
+
40
+ systemInstructions: Schema.optional(Schema.String).annotations({
41
+ description: 'Additional system instructions to add to the system prompt.',
42
+ }),
43
+ }),
44
+ output: Schema.Any,
45
+ // ECHO types that the handler loads via Database.load(). Declaring them here ensures the
46
+ // runtime registers their schema before remote invocation (e.g. via the EDGE function service).
47
+ types: [Routine.Routine, Text.Text, Feed.Feed, Chat.Chat],
48
+ services: [
49
+ AiService.AiService,
50
+ Database.Service,
51
+ Feed.FeedService,
52
+ OpaqueToolkit.OpaqueToolkitProvider,
53
+ OperationRegistry.Service,
54
+ Trace.TraceService,
55
+ ],
56
+ }).pipe(Operation.intrinsic);
@@ -2,10 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type FunctionDefinition } from '@dxos/functions';
5
+ import { OperationHandlerSet } from '@dxos/compute';
6
6
 
7
- import { default as prompt$ } from './prompt';
7
+ export * from './definitions';
8
8
 
9
- export namespace Agent {
10
- export const prompt: FunctionDefinition.Any = prompt$; // TODO(burdon): Temp fix for TS error.
11
- }
9
+ export const AgentHandlers = OperationHandlerSet.lazy(() => import('./prompt'));
@@ -0,0 +1 @@
1
+ {"conversations":[{"parameters":{"model":"@anthropic/claude-opus-4-6","stream":true,"tools":[{"name":"completeJob","inputSchema":{"type":"object","required":[],"properties":{"success":{"$id":"/schemas/any","title":"any"},"failure":{"type":"object","required":["message"],"properties":{"message":{"type":"string","description":"Short message describing the error."},"description":{"type":"string","description":"Optional longer message describing in detail what went wrong"}},"additionalProperties":false}},"additionalProperties":false}}]},"prompt":{"content":[{"role":"system","content":"You are an agent running in the non-interactive mode.\nThe user is unable to see what you are doing, and cannot answer any questions.\nDo not ask questions.\nComplete the task before you, and at the end call [completeJob] with the output.\nIf you are unable to complete the task, call [completeJob] with the failure reason.\nIf no output is required, call [completeJob] with an empty object: {}\nDo not stop until you call [completeJob].","options":{}},{"role":"user","content":"Reply with a single word: ack.\n<input>{}</input>","options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_014de59sT4sHe36njza5yiBZ","modelId":"claude-opus-4-6","timestamp":"1970-01-01T00:00:00.000Z","metadata":{}},{"type":"reasoning-start","id":"0","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"The","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" user wants me to reply with a single word \"ack\" and complete the job.","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"","metadata":{"anthropic":{"type":"thinking","signature":"EoQCClkIDRgCKkDmvWuElJmvgQqKv/OM8h45Qm9vFiau8OtHTiKeFGzABfFt5k5Oc9XiWXg1jeCrSXFmAcI3XEaKXp6jF8PCj/O0Mg9jbGF1ZGUtb3B1cy00LTY4ABIM63lszYQjMtcgEi3WGgzpeUSSrp9JhxxUoGsiMFJjapYnuh9y/rE9xW660c0B5Av77wj/bAOfx2vMXoXlHzL0C9O7TlzfgR+zqrw6cipZeF169zGXzr1tdCpD4N9lF1/HvBBieF/jOP7lhN5GXbuxFHatNfix4ocm9beWxWqOQ+WcOXQWJB8lQu+B/mW1y1MXgwTiQi1rf9OhDxtxXoBiIKCSp0aZPBMYAQ=="}}},{"type":"reasoning-end","id":"0","metadata":{}},{"type":"tool-params-start","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","name":"completeJob","providerExecuted":false,"metadata":{}},{"type":"tool-params-delta","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","delta":"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","delta":"{\"success\": ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","delta":"\"a","metadata":{}},{"type":"tool-params-delta","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","delta":"ck\"}","metadata":{}},{"type":"tool-params-end","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","metadata":{}},{"type":"finish","reason":"tool-calls","usage":{"inputTokens":757,"outputTokens":89,"totalTokens":846},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":757,"output_tokens":9,"server_tool_use":null,"service_tier":"standard"}}}}]},{"parameters":{"model":"@anthropic/claude-opus-4-6","stream":true,"tools":[{"name":"completeJob","inputSchema":{"type":"object","required":[],"properties":{"success":{"$id":"/schemas/any","title":"any"},"failure":{"type":"object","required":["message"],"properties":{"message":{"type":"string","description":"Short message describing the error."},"description":{"type":"string","description":"Optional longer message describing in detail what went wrong"}},"additionalProperties":false}},"additionalProperties":false}}]},"prompt":{"content":[{"role":"system","content":"You are an agent running in the non-interactive mode.\nThe user is unable to see what you are doing, and cannot answer any questions.\nDo not ask questions.\nComplete the task before you, and at the end call [completeJob] with the output.\nIf you are unable to complete the task, call [completeJob] with the failure reason.\nIf no output is required, call [completeJob] with an empty object: {}\nDo not stop until you call [completeJob].","options":{}},{"role":"user","content":"Reply with a single word: ack.\n<input>{}</input>","options":{}},{"role":"assistant","content":[{"type":"reasoning","text":"The user wants me to reply with a single word \"ack\" and complete the job.","options":{}},{"type":"tool-call","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","name":"completeJob","params":{"success":"ack"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_01Bn2cwnUQYvUCJ4RsL2SSuY","name":"completeJob","isFailure":false,"result":{},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_01R5VQTdGZLcaSFeVhzNYn6K","modelId":"claude-opus-4-6","timestamp":"1970-01-01T00:00:00.000Z","metadata":{}},{"type":"finish","reason":"stop","usage":{"inputTokens":824,"outputTokens":2,"totalTokens":826},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":824,"output_tokens":2,"server_tool_use":null,"service_tier":"standard"}}}}]}]}
@@ -0,0 +1,78 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { describe, expect, it } from '@effect/vitest';
6
+ import * as Effect from 'effect/Effect';
7
+
8
+ import { AiContext } from '@dxos/assistant';
9
+ import { Routine, Operation, OperationHandlerSet } from '@dxos/compute';
10
+ import { Database, Feed, Filter, Obj, Ref } from '@dxos/echo';
11
+ import { TestHelpers } from '@dxos/effect/testing';
12
+ import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
13
+ import { ObjectId } from '@dxos/keys';
14
+ import { Text } from '@dxos/schema';
15
+ import { Message } from '@dxos/types';
16
+
17
+ import * as Chat from '../../types/Chat';
18
+ import { AgentPrompt } from './definitions';
19
+ import defaultAgentPrompt from './prompt';
20
+
21
+ ObjectId.dangerouslyDisableRandomness();
22
+
23
+ const operationHandlerSet = OperationHandlerSet.make(defaultAgentPrompt);
24
+
25
+ const TestLayer = AssistantTestLayer({
26
+ operationHandlers: operationHandlerSet,
27
+ types: [Chat.Chat, Message.Message, AiContext.Binding, Text.Text],
28
+ aiServicePreset: 'edge-remote',
29
+ });
30
+
31
+ const countFeedMessages = (feed: Feed.Feed) =>
32
+ Effect.gen(function* () {
33
+ const items = yield* Feed.runQuery(feed, Filter.everything());
34
+ return items.filter(Obj.instanceOf(Message.Message)).length;
35
+ });
36
+
37
+ describe('Agent prompt', () => {
38
+ it.effect(
39
+ 'chat mode appends assistant messages to the chat queue',
40
+ Effect.fnUntraced(
41
+ function* (_) {
42
+ const feed = yield* Database.add(Feed.make());
43
+ const messageCountBefore = yield* countFeedMessages(feed);
44
+
45
+ const chat = yield* Database.add(
46
+ Chat.make({
47
+ feed: Ref.make(feed),
48
+ }),
49
+ );
50
+
51
+ const prompt = yield* Database.add(
52
+ Routine.make({
53
+ name: 'chat-mode-test',
54
+ instructions: 'Reply with a single word: ack.',
55
+ blueprints: [],
56
+ context: [],
57
+ }),
58
+ );
59
+
60
+ yield* Database.flush();
61
+
62
+ const result = yield* Operation.invoke(AgentPrompt, {
63
+ prompt: Ref.make(prompt),
64
+ input: {},
65
+ chat: Ref.make(chat),
66
+ });
67
+
68
+ const messageCountAfter = yield* countFeedMessages(feed);
69
+
70
+ expect(messageCountAfter).toBeGreaterThan(messageCountBefore);
71
+ expect(result).toBe('ack');
72
+ },
73
+ Effect.provide(TestLayer),
74
+ TestHelpers.provideTestContext,
75
+ ),
76
+ { timeout: 60_000 },
77
+ );
78
+ });