@dxos/assistant-toolkit 0.8.4-main.e8ec1fe → 0.8.4-main.effb148878

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-ZKSSMPLY.mjs +30 -0
  3. package/dist/lib/neutral/add-artifact-ZKSSMPLY.mjs.map +7 -0
  4. package/dist/lib/neutral/agent-UIASE5LZ.mjs +65 -0
  5. package/dist/lib/neutral/agent-UIASE5LZ.mjs.map +7 -0
  6. package/dist/lib/neutral/chunk-AF5TWFLV.mjs +66 -0
  7. package/dist/lib/neutral/chunk-AF5TWFLV.mjs.map +7 -0
  8. package/dist/lib/neutral/chunk-CMHECL6N.mjs +282 -0
  9. package/dist/lib/neutral/chunk-CMHECL6N.mjs.map +7 -0
  10. package/dist/lib/neutral/chunk-DC5KITJP.mjs +74 -0
  11. package/dist/lib/neutral/chunk-DC5KITJP.mjs.map +7 -0
  12. package/dist/lib/neutral/chunk-EUHZLWCG.mjs +26 -0
  13. package/dist/lib/neutral/chunk-EUHZLWCG.mjs.map +7 -0
  14. package/dist/lib/neutral/chunk-EUTROPCP.mjs +345 -0
  15. package/dist/lib/neutral/chunk-EUTROPCP.mjs.map +7 -0
  16. package/dist/lib/neutral/chunk-FNN6ERC6.mjs +61 -0
  17. package/dist/lib/neutral/chunk-FNN6ERC6.mjs.map +7 -0
  18. package/dist/lib/neutral/chunk-GEMRKH7J.mjs +103 -0
  19. package/dist/lib/neutral/chunk-GEMRKH7J.mjs.map +7 -0
  20. package/dist/lib/neutral/chunk-GHGJCH73.mjs +76 -0
  21. package/dist/lib/neutral/chunk-GHGJCH73.mjs.map +7 -0
  22. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  23. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-LO2S3ICN.mjs +26 -0
  25. package/dist/lib/neutral/chunk-LO2S3ICN.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-MMIERIDT.mjs +70 -0
  27. package/dist/lib/neutral/chunk-MMIERIDT.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-OC77MYT5.mjs +48 -0
  29. package/dist/lib/neutral/chunk-OC77MYT5.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-ONQXVECY.mjs +110 -0
  31. package/dist/lib/neutral/chunk-ONQXVECY.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-PAEPER4S.mjs +70 -0
  33. package/dist/lib/neutral/chunk-PAEPER4S.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-RIF2TKJJ.mjs +76 -0
  35. package/dist/lib/neutral/chunk-RIF2TKJJ.mjs.map +7 -0
  36. package/dist/lib/neutral/context-add-VNJUVPSY.mjs +22 -0
  37. package/dist/lib/neutral/context-add-VNJUVPSY.mjs.map +7 -0
  38. package/dist/lib/neutral/context-remove-ZASL7ABZ.mjs +22 -0
  39. package/dist/lib/neutral/context-remove-ZASL7ABZ.mjs.map +7 -0
  40. package/dist/lib/neutral/create-project-VNC2KKBG.mjs +35 -0
  41. package/dist/lib/neutral/create-project-VNC2KKBG.mjs.map +7 -0
  42. package/dist/lib/neutral/delete-NLBJMMBJ.mjs +19 -0
  43. package/dist/lib/neutral/delete-NLBJMMBJ.mjs.map +7 -0
  44. package/dist/lib/neutral/enable-blueprints-SMGQ2WCU.mjs +47 -0
  45. package/dist/lib/neutral/enable-blueprints-SMGQ2WCU.mjs.map +7 -0
  46. package/dist/lib/neutral/fetch-VV3DU75K.mjs +16 -0
  47. package/dist/lib/neutral/fetch-VV3DU75K.mjs.map +7 -0
  48. package/dist/lib/neutral/fetch-messages-YXH77S3S.mjs +139 -0
  49. package/dist/lib/neutral/fetch-messages-YXH77S3S.mjs.map +7 -0
  50. package/dist/lib/neutral/get-context-LG2CNVII.mjs +35 -0
  51. package/dist/lib/neutral/get-context-LG2CNVII.mjs.map +7 -0
  52. package/dist/lib/neutral/index.mjs +915 -0
  53. package/dist/lib/neutral/index.mjs.map +7 -0
  54. package/dist/lib/neutral/load-K7HEJA54.mjs +17 -0
  55. package/dist/lib/neutral/load-K7HEJA54.mjs.map +7 -0
  56. package/dist/lib/neutral/meta.json +1 -0
  57. package/dist/lib/neutral/object-create-EN6PJN3L.mjs +35 -0
  58. package/dist/lib/neutral/object-create-EN6PJN3L.mjs.map +7 -0
  59. package/dist/lib/neutral/object-delete-RMA5ZKGY.mjs +18 -0
  60. package/dist/lib/neutral/object-delete-RMA5ZKGY.mjs.map +7 -0
  61. package/dist/lib/neutral/object-update-JW5PLR2T.mjs +28 -0
  62. package/dist/lib/neutral/object-update-JW5PLR2T.mjs.map +7 -0
  63. package/dist/lib/neutral/project-OGO5ABSZ.mjs +23 -0
  64. package/dist/lib/neutral/project-OGO5ABSZ.mjs.map +7 -0
  65. package/dist/lib/neutral/project-rules-IVA3DSOW.mjs +78 -0
  66. package/dist/lib/neutral/project-rules-IVA3DSOW.mjs.map +7 -0
  67. package/dist/lib/neutral/prompt-YVFNLD7U.mjs +170 -0
  68. package/dist/lib/neutral/prompt-YVFNLD7U.mjs.map +7 -0
  69. package/dist/lib/neutral/qualifier-UTPO5E3S.mjs +89 -0
  70. package/dist/lib/neutral/qualifier-UTPO5E3S.mjs.map +7 -0
  71. package/dist/lib/neutral/query-3FK3ED6L.mjs +69 -0
  72. package/dist/lib/neutral/query-3FK3ED6L.mjs.map +7 -0
  73. package/dist/lib/neutral/query-GXZT4KUX.mjs +32 -0
  74. package/dist/lib/neutral/query-GXZT4KUX.mjs.map +7 -0
  75. package/dist/lib/neutral/query-blueprints-GA2JM54N.mjs +16 -0
  76. package/dist/lib/neutral/query-blueprints-GA2JM54N.mjs.map +7 -0
  77. package/dist/lib/neutral/relation-create-XOFKYPL2.mjs +34 -0
  78. package/dist/lib/neutral/relation-create-XOFKYPL2.mjs.map +7 -0
  79. package/dist/lib/neutral/relation-delete-MVJKKVEQ.mjs +18 -0
  80. package/dist/lib/neutral/relation-delete-MVJKKVEQ.mjs.map +7 -0
  81. package/dist/lib/neutral/save-TFQMJKG7.mjs +23 -0
  82. package/dist/lib/neutral/save-TFQMJKG7.mjs.map +7 -0
  83. package/dist/lib/neutral/schema-add-I7BFBU55.mjs +24 -0
  84. package/dist/lib/neutral/schema-add-I7BFBU55.mjs.map +7 -0
  85. package/dist/lib/neutral/schema-list-TYGGAO2P.mjs +49 -0
  86. package/dist/lib/neutral/schema-list-TYGGAO2P.mjs.map +7 -0
  87. package/dist/lib/neutral/sync-issues-3U3EL6KO.mjs +166 -0
  88. package/dist/lib/neutral/sync-issues-3U3EL6KO.mjs.map +7 -0
  89. package/dist/lib/neutral/sync-triggers-M6U6RAKN.mjs +138 -0
  90. package/dist/lib/neutral/sync-triggers-M6U6RAKN.mjs.map +7 -0
  91. package/dist/lib/neutral/tag-add-RCE2QULJ.mjs +19 -0
  92. package/dist/lib/neutral/tag-add-RCE2QULJ.mjs.map +7 -0
  93. package/dist/lib/neutral/tag-remove-EPKB5CDE.mjs +19 -0
  94. package/dist/lib/neutral/tag-remove-EPKB5CDE.mjs.map +7 -0
  95. package/dist/lib/neutral/testing/index.mjs +73 -0
  96. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  97. package/dist/lib/neutral/update-blueprints-VOGJKSMQ.mjs +16 -0
  98. package/dist/lib/neutral/update-blueprints-VOGJKSMQ.mjs.map +7 -0
  99. package/dist/lib/neutral/update-tasks-PNNNCPWH.mjs +13 -0
  100. package/dist/lib/neutral/update-tasks-PNNNCPWH.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 +173 -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 +5 -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 +103 -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 +15 -15
  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 +78 -0
  296. package/dist/types/src/types/Agent.d.ts.map +1 -0
  297. package/dist/types/src/types/Chat.d.ts +53 -0
  298. package/dist/types/src/types/Chat.d.ts.map +1 -0
  299. package/dist/types/src/types/McpServer.d.ts +20 -0
  300. package/dist/types/src/types/McpServer.d.ts.map +1 -0
  301. package/dist/types/src/types/Memory.d.ts +11 -0
  302. package/dist/types/src/types/Memory.d.ts.map +1 -0
  303. package/dist/types/src/types/Plan.d.ts +87 -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 +60 -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 +331 -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 +40 -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 +71 -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 +27 -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 +24 -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 +71 -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 +68 -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 +94 -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 +91 -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 +65 -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 +156 -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 +26 -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 +158 -175
  403. package/src/errors.ts +25 -0
  404. package/src/functions/READ_THIS.md +5 -0
  405. package/src/functions/agent/definitions.ts +57 -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 +58 -38
  413. package/src/testing/index.ts +2 -1
  414. package/src/testing/plugins.tsx +74 -0
  415. package/src/toolkits/WebToolkit.ts +33 -0
  416. package/src/toolkits/index.ts +1 -2
  417. package/src/types/Agent.ts +235 -0
  418. package/src/types/Chat.ts +56 -0
  419. package/src/types/McpServer.ts +34 -0
  420. package/src/types/Memory.ts +24 -0
  421. package/src/types/Plan.ts +103 -0
  422. package/src/types/index.ts +9 -0
  423. package/dist/lib/browser/index.mjs +0 -2777
  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 -2778
  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 -18
  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 -18
  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 -173
  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 -174
  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 -165
  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 -47
  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,28 +11,18 @@ 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 { Obj, type Relation } from '@dxos/echo';
15
- import { Filter, Query } from '@dxos/echo';
14
+ import { Database, Entity, Feed, Filter, Obj, Query, Type } from '@dxos/echo';
15
+ import { isEncodedReference } from '@dxos/echo-protocol';
16
16
  import {
17
- EntityKind,
18
- ObjectId,
19
17
  ReferenceAnnotationId,
20
- RelationSourceDXNId,
21
18
  RelationSourceId,
22
- RelationTargetDXNId,
23
19
  RelationTargetId,
24
- create,
25
- getEntityKind,
26
- getSchemaDXN,
27
- getSchemaTypename,
20
+ createObject,
28
21
  getTypeAnnotation,
29
22
  getTypeIdentifierAnnotation,
30
23
  } from '@dxos/echo/internal';
31
- import { type EchoDatabase, type Queue } from '@dxos/echo-db';
32
- import { isEncodedReference } from '@dxos/echo-protocol';
33
24
  import { mapAst } from '@dxos/effect';
34
- import { ContextQueueService, DatabaseService } from '@dxos/functions';
35
- import { DXN } from '@dxos/keys';
25
+ import { DXN, EchoURI, ObjectId, type URI } from '@dxos/keys';
36
26
  import { log } from '@dxos/log';
37
27
  import { deepMapValues, isNonNullable, trim } from '@dxos/util';
38
28
 
@@ -42,10 +32,9 @@ export const Subgraph = Schema.Struct({
42
32
  objects: Schema.Array(Schema.Any),
43
33
  });
44
34
 
45
- export interface Subgraph extends Schema.Schema.Type<typeof Subgraph> {}
46
-
35
+ export type Subgraph = Schema.Schema.Type<typeof Subgraph>;
47
36
  export type RelatedSchema = {
48
- schema: Schema.Schema.AnyNoContext;
37
+ schema: Type.AnyEntity;
49
38
  kind: 'reference' | 'relation';
50
39
  };
51
40
 
@@ -56,29 +45,27 @@ export type RelatedSchema = {
56
45
  * @param schema
57
46
  * @returns
58
47
  */
59
- export const findRelatedSchema = async (
60
- db: EchoDatabase,
61
- anchor: Schema.Schema.AnyNoContext,
62
- ): Promise<RelatedSchema[]> => {
48
+ export const findRelatedSchema = async (db: Database.Database, anchor: Type.AnyEntity): Promise<RelatedSchema[]> => {
63
49
  // TODO(dmaretskyi): Query stored schemas.
64
- const allSchemas = [...db.graph.schemaRegistry.schemas];
50
+ const allSchemas = await db.graph.schemaRegistry.query().run();
65
51
 
66
52
  // TODO(dmaretskyi): Also do references.
67
53
  return allSchemas
68
- .filter((schema) => {
69
- if (getTypeAnnotation(schema)?.kind !== EntityKind.Relation) {
54
+ .filter((type) => {
55
+ const schema = Type.getSchema(type);
56
+ if (getTypeAnnotation(schema)?.kind !== Entity.Kind.Relation) {
70
57
  return false;
71
58
  }
72
59
 
73
60
  return (
74
- isSchemaAddressableByDxn(anchor, DXN.parse(getTypeAnnotation(schema)!.sourceSchema!)) ||
75
- isSchemaAddressableByDxn(anchor, DXN.parse(getTypeAnnotation(schema)!.targetSchema!))
61
+ isSchemaAddressableByDXN(anchor, getTypeAnnotation(schema)!.sourceSchema!) ||
62
+ isSchemaAddressableByDXN(anchor, getTypeAnnotation(schema)!.targetSchema!)
76
63
  );
77
64
  })
78
65
  .map(
79
66
  (schema): RelatedSchema => ({
80
- schema,
81
67
  kind: 'relation',
68
+ schema,
82
69
  }),
83
70
  );
84
71
  };
@@ -87,17 +74,12 @@ export const findRelatedSchema = async (
87
74
  * Non-strict DXN comparison.
88
75
  * Returns true if the DXN could be resolved to the schema.
89
76
  */
90
- const isSchemaAddressableByDxn = (schema: Schema.Schema.AnyNoContext, dxn: DXN): boolean => {
91
- if (getTypeIdentifierAnnotation(schema) === dxn.toString()) {
77
+ const isSchemaAddressableByDXN = (type: Type.AnyEntity, dxn: DXN.DXN): boolean => {
78
+ if (getTypeIdentifierAnnotation(Type.getSchema(type)) === dxn) {
92
79
  return true;
93
80
  }
94
81
 
95
- const t = dxn.asTypeDXN();
96
- if (t) {
97
- return t.type === getSchemaTypename(schema);
98
- }
99
-
100
- return false;
82
+ return DXN.getName(dxn) === Type.getTypename(type);
101
83
  };
102
84
 
103
85
  /**
@@ -114,20 +96,20 @@ export const LocalSearchToolkit = Toolkit.make(
114
96
  },
115
97
  success: Schema.Unknown,
116
98
  failure: Schema.Never,
117
- dependencies: [DatabaseService],
99
+ dependencies: [Database.Service, Feed.FeedService],
118
100
  }),
119
101
  );
120
102
 
121
103
  export const LocalSearchHandler = LocalSearchToolkit.toLayer({
122
104
  search_local_search: Effect.fn(function* ({ query }) {
123
- const { objects } = yield* DatabaseService.runQuery(Query.select(Filter.text(query, { type: 'vector' })));
105
+ const objects = yield* Database.runQuery(Query.select(Filter.text(query, { type: 'vector' })));
124
106
  const results = [...objects];
125
107
 
126
- const option = yield* Effect.serviceOption(ContextQueueService);
127
- if (Option.isSome(option)) {
128
- const queueObjects = yield* Effect.promise(() => option.value.queue.queryObjects());
129
- // TODO(dmaretskyi): Text search on the queue.
130
- results.push(...queueObjects);
108
+ const feedOption = yield* Effect.serviceOption(Feed.ContextFeedService);
109
+ if (Option.isSome(feedOption)) {
110
+ const feedObjects = yield* Feed.runQuery(feedOption.value.feed, Filter.everything());
111
+ // TODO(dmaretskyi): Text search on the feed.
112
+ results.push(...feedObjects);
131
113
  }
132
114
 
133
115
  return trim`
@@ -144,21 +126,21 @@ export const LocalSearchHandler = LocalSearchToolkit.toLayer({
144
126
  class GraphWriterSchema extends Context.Tag('@dxos/assistant/GraphWriterSchema')<
145
127
  GraphWriterSchema,
146
128
  {
147
- schema: Schema.Schema.AnyNoContext[];
129
+ schema: Type.AnyEntity[];
148
130
  }
149
131
  >() {}
150
132
 
151
133
  /**
152
134
  * Forms typed objects that can be written to the graph database.
153
135
  */
154
- export const makeGraphWriterToolkit = ({ schema }: { schema: Schema.Schema.AnyNoContext[] }) => {
136
+ export const makeGraphWriterToolkit = ({ schema }: { schema: Type.AnyEntity[] }) => {
155
137
  return Toolkit.make(
156
138
  Tool.make('graph_writer', {
157
139
  description: 'Write to the local graph database',
158
140
  parameters: createExtractionSchema(schema).fields,
159
141
  success: Schema.Unknown,
160
142
  failure: Schema.Never,
161
- dependencies: [DatabaseService, ContextQueueService],
143
+ dependencies: [Database.Service, Feed.ContextFeedService, Feed.FeedService],
162
144
  }).annotateContext(Context.make(GraphWriterSchema, { schema })),
163
145
  );
164
146
  };
@@ -168,7 +150,7 @@ export const makeGraphWriterHandler = (
168
150
  {
169
151
  onAppend,
170
152
  }: {
171
- onAppend?: (object: DXN[]) => void;
153
+ onAppend?: (object: URI.URI[]) => void;
172
154
  } = {},
173
155
  ) => {
174
156
  const { schema } = Context.get(
@@ -178,12 +160,12 @@ export const makeGraphWriterHandler = (
178
160
 
179
161
  return toolkit.toLayer({
180
162
  graph_writer: Effect.fn(function* (input) {
181
- const { db } = yield* DatabaseService;
182
- const { queue } = yield* ContextQueueService;
183
- const data = yield* Effect.promise(() => sanitizeObjects(schema, input as any, db, queue));
184
- yield* Effect.promise(() => queue.append(data as Obj.Any[]));
163
+ const { db } = yield* Database.Service;
164
+ const { feed } = yield* Feed.ContextFeedService;
165
+ const data = yield* sanitizeObjects(schema, input as any, db, feed);
166
+ yield* Feed.append(feed, data as Obj.Unknown[]);
185
167
 
186
- const dxns = data.map((obj) => Obj.getDXN(obj));
168
+ const dxns = data.map((obj) => Entity.getURI(obj));
187
169
  onAppend?.(dxns);
188
170
  return dxns;
189
171
  }),
@@ -193,152 +175,153 @@ export const makeGraphWriterHandler = (
193
175
  /**
194
176
  * Create a schema for structured data extraction.
195
177
  */
196
- export const createExtractionSchema = (types: Schema.Schema.AnyNoContext[]) => {
178
+ export const createExtractionSchema = (types: Type.AnyEntity[]) => {
197
179
  return Schema.Struct({
198
180
  ...Object.fromEntries(
199
- types.map(preprocessSchema).map((schema, index) => [
200
- `objects_${getSanitizedSchemaName(types[index])}`,
201
- Schema.optional(Schema.Array(schema)).annotations({
202
- description: `The objects of type: ${getSchemaDXN(types[index])?.asTypeDXN()!.type}. ${SchemaAST.getDescriptionAnnotation(types[index].ast).pipe(Option.getOrElse(() => ''))}`,
203
- }),
204
- ]),
181
+ types
182
+ .map((type) => preprocessSchema(Type.getSchema(type)))
183
+ .map((schema, index) => [
184
+ `objects_${getSanitizedSchemaName(types[index])}`,
185
+ Schema.optional(Schema.Array(schema)).annotations({
186
+ description: `The objects of type: ${DXN.getName(DXN.tryMake(Type.getURI(types[index])!)!)}. ${SchemaAST.getDescriptionAnnotation(Type.getSchema(types[index]).ast).pipe(Option.getOrElse(() => ''))}`,
187
+ }),
188
+ ]),
205
189
  ),
206
190
  });
207
191
  };
208
192
 
209
- export const getSanitizedSchemaName = (schema: Schema.Schema.AnyNoContext) => {
210
- return getSchemaDXN(schema)!
211
- .asTypeDXN()!
212
- .type.replaceAll(/[^a-zA-Z0-9]+/g, '_');
193
+ export const getSanitizedSchemaName = (schema: Type.AnyEntity) => {
194
+ return DXN.getName(DXN.tryMake(Type.getURI(schema)!)!).replaceAll(/[^a-zA-Z0-9]+/g, '_');
213
195
  };
214
196
 
215
- export const sanitizeObjects = async (
216
- types: Schema.Schema.AnyNoContext[],
197
+ export const sanitizeObjects = (
198
+ types: Type.AnyEntity[],
217
199
  data: Record<string, readonly unknown[]>,
218
- db: EchoDatabase,
219
- queue?: Queue,
220
- ): Promise<Obj.Any[]> => {
221
- const entries = types
222
- .map(
223
- (type) =>
224
- data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
225
- data: object,
226
- schema: type,
227
- })) ?? [],
228
- )
229
- .flat();
230
-
231
- const idMap = new Map<string, string>();
232
- const existingIds = new Set<ObjectId>();
233
- const enitties = new Map<ObjectId, Obj.Any | Relation.Any>();
234
-
235
- const resolveId = (id: string): DXN | undefined => {
236
- if (ObjectId.isValid(id)) {
237
- existingIds.add(id);
238
- return DXN.fromLocalObjectId(id);
239
- }
200
+ db: Database.Database,
201
+ feed?: Feed.Feed,
202
+ ): Effect.Effect<Entity.Unknown[], never, Feed.FeedService> =>
203
+ Effect.gen(function* () {
204
+ const entries = types
205
+ .map(
206
+ (type) =>
207
+ data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
208
+ data: object,
209
+ schema: type,
210
+ })) ?? [],
211
+ )
212
+ .flat();
213
+
214
+ const idMap = new Map<string, string>();
215
+ const existingIds = new Set<ObjectId>();
216
+ const enitties = new Map<ObjectId, Entity.Unknown>();
217
+
218
+ const resolveId = (id: string): EchoURI.EchoURI | undefined => {
219
+ if (ObjectId.isValid(id)) {
220
+ existingIds.add(id);
221
+ return EchoURI.make({ objectId: id });
222
+ }
240
223
 
241
- const mappedId = idMap.get(id);
242
- if (mappedId) {
243
- return DXN.fromLocalObjectId(mappedId);
244
- }
224
+ const mappedId = idMap.get(id);
225
+ if (mappedId && ObjectId.isValid(mappedId)) {
226
+ return EchoURI.make({ objectId: mappedId });
227
+ }
245
228
 
246
- return undefined;
247
- };
229
+ return undefined;
230
+ };
231
+
232
+ const res = entries
233
+ .map((entry) => {
234
+ // This entry mutates existing object.
235
+ if (ObjectId.isValid(entry.data.id)) {
236
+ return entry;
237
+ }
248
238
 
249
- const res = entries
250
- .map((entry) => {
251
- // This entry mutates existing object.
252
- if (ObjectId.isValid(entry.data.id)) {
239
+ idMap.set(entry.data.id, ObjectId.random());
240
+ entry.data.id = idMap.get(entry.data.id);
253
241
  return entry;
254
- }
242
+ })
243
+ .map((entry) => {
244
+ const data = deepMapValues(entry.data, (value, recurse) => {
245
+ if (isEncodedReference(value)) {
246
+ const ref = value['/'];
247
+ const id = resolveId(ref);
248
+
249
+ if (id) {
250
+ // Link to an existing object.
251
+ return { '/': id.toString() };
252
+ } else {
253
+ // Search URIs?
254
+ return { '/': `search:?q=${encodeURIComponent(ref)}` };
255
+ }
256
+ }
255
257
 
256
- idMap.set(entry.data.id, ObjectId.random());
257
- entry.data.id = idMap.get(entry.data.id);
258
- return entry;
259
- })
260
- .map((entry) => {
261
- const data = deepMapValues(entry.data, (value, recurse) => {
262
- if (isEncodedReference(value)) {
263
- const ref = value['/'];
264
- const id = resolveId(ref);
265
-
266
- if (id) {
267
- // Link to an existing object.
268
- return { '/': id.toString() };
269
- } else {
270
- // Search URIs?
271
- return { '/': `search:?q=${encodeURIComponent(ref)}` };
258
+ return recurse(value);
259
+ });
260
+
261
+ let sourceUri: EchoURI.EchoURI | undefined;
262
+ let targetUri: EchoURI.EchoURI | undefined;
263
+ if (Entity.getKind(Type.getSchema(entry.schema)) === 'relation') {
264
+ sourceUri = resolveId(data.source);
265
+ if (!sourceUri) {
266
+ log.warn('source not found', { source: data.source });
272
267
  }
268
+ targetUri = resolveId(data.target);
269
+ if (!targetUri) {
270
+ log.warn('target not found', { target: data.target });
271
+ }
272
+ delete data.source;
273
+ delete data.target;
273
274
  }
274
275
 
275
- return recurse(value);
276
- });
276
+ return {
277
+ data,
278
+ schema: entry.schema,
279
+ sourceUri,
280
+ targetUri,
281
+ };
282
+ })
283
+ .filter((object) => !existingIds.has(object.data.id)); // TODO(dmaretskyi): This dissallows updating existing objects.
284
+
285
+ // TODO(dmaretskyi): Use ref resolver.
286
+ const dbObjects = yield* Effect.promise(() => db.query(Query.select(Filter.id(...existingIds))).run());
287
+ const feedObjects = feed && existingIds.size > 0 ? yield* Feed.runQuery(feed, Filter.id(...existingIds)) : [];
288
+ const objects = [...dbObjects, ...feedObjects].filter(isNonNullable);
289
+
290
+ // TODO(dmaretskyi): Returns everything if IDs are empty!
291
+ log.info('objects', { dbObjects, feedObjects, existingIds });
292
+ const missing = Array.from(existingIds).filter((id) => !objects.some((object) => object.id === id));
293
+ if (missing.length > 0) {
294
+ throw new Error(`Object IDs do not point to existing objects: ${missing.join(', ')}`);
295
+ }
277
296
 
278
- if (getEntityKind(entry.schema) === 'relation') {
279
- const sourceDxn = resolveId(data.source);
280
- if (!sourceDxn) {
281
- log.warn('source not found', { source: data.source });
297
+ return res.flatMap(({ data, schema, sourceUri, targetUri }) => {
298
+ let skip = false;
299
+ if (sourceUri) {
300
+ const id = EchoURI.getObjectId(sourceUri);
301
+ const obj = objects.find((object) => object.id === id) ?? (id ? enitties.get(id) : undefined);
302
+ if (obj) {
303
+ data[RelationSourceId] = obj;
304
+ } else {
305
+ skip = true;
282
306
  }
283
- const targetDxn = resolveId(data.target);
284
- if (!targetDxn) {
285
- log.warn('target not found', { target: data.target });
286
- }
287
- delete data.source;
288
- delete data.target;
289
- data[RelationSourceDXNId] = sourceDxn;
290
- data[RelationTargetDXNId] = targetDxn;
291
307
  }
292
-
293
- return {
294
- data,
295
- schema: entry.schema,
296
- };
297
- })
298
- .filter((object) => !existingIds.has(object.data.id)); // TODO(dmaretskyi): This dissallows updating existing objects.
299
-
300
- // TODO(dmaretskyi): Use ref resolver.
301
- const { objects: dbObjects } = await db.query(Query.select(Filter.ids(...existingIds))).run();
302
- const queueObjects = (await queue?.getObjectsById([...existingIds])) ?? [];
303
- const objects = [...dbObjects, ...queueObjects].filter(isNonNullable);
304
-
305
- // TODO(dmaretskyi): Returns everything if IDs are empty!
306
- log.info('objects', { dbObjects, queueObjects, existingIds });
307
- const missing = Array.from(existingIds).filter((id) => !objects.some((object) => object.id === id));
308
- if (missing.length > 0) {
309
- throw new Error(`Object IDs do not point to existing objects: ${missing.join(', ')}`);
310
- }
311
-
312
- return res.flatMap(({ data, schema }) => {
313
- let skip = false;
314
- if (RelationSourceDXNId in data) {
315
- const id = (data[RelationSourceDXNId] as DXN).asEchoDXN()?.echoId;
316
- const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
317
- if (obj) {
318
- delete data[RelationSourceDXNId];
319
- data[RelationSourceId] = obj;
320
- } else {
321
- skip = true;
308
+ if (targetUri) {
309
+ const id = EchoURI.getObjectId(targetUri);
310
+ const obj = objects.find((object) => object.id === id) ?? (id ? enitties.get(id) : undefined);
311
+ if (obj) {
312
+ data[RelationTargetId] = obj;
313
+ } else {
314
+ skip = true;
315
+ }
322
316
  }
323
- }
324
- if (RelationTargetDXNId in data) {
325
- const id = (data[RelationTargetDXNId] as DXN).asEchoDXN()?.echoId;
326
- const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
327
- if (obj) {
328
- delete data[RelationTargetDXNId];
329
- data[RelationTargetId] = obj;
330
- } else {
331
- skip = true;
317
+ if (!skip) {
318
+ const obj = createObject(schema, data);
319
+ enitties.set(obj.id, obj);
320
+ return [obj];
332
321
  }
333
- }
334
- if (!skip) {
335
- const obj = create(schema, data);
336
- enitties.set(obj.id, obj);
337
- return [obj];
338
- }
339
- return [];
322
+ return [];
323
+ });
340
324
  });
341
- };
342
325
 
343
326
  const SoftRef = Schema.Struct({
344
327
  '/': Schema.String,
@@ -347,7 +330,7 @@ const SoftRef = Schema.Struct({
347
330
  });
348
331
 
349
332
  const preprocessSchema = (schema: Schema.Schema.AnyNoContext) => {
350
- const isRelationSchema = getEntityKind(schema) === 'relation';
333
+ const isRelationSchema = Entity.getKind(schema) === 'relation';
351
334
 
352
335
  const go = (ast: SchemaAST.AST, visited = new Set<SchemaAST.AST>()): SchemaAST.AST => {
353
336
  if (visited.has(ast)) {
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 { type EchoURI } 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?: EchoURI.EchoURI;
17
+ chat?: EchoURI.EchoURI;
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,57 @@
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
+ icon: 'ph--brain--regular',
21
+ },
22
+ input: Schema.Struct({
23
+ prompt: Ref.Ref(Routine.Routine),
24
+
25
+ /**
26
+ * When set, runs in this chat (history, queue, and bound context). Routine blueprints and context objects are merged into the conversation for this request.
27
+ */
28
+ chat: Schema.optional(Ref.Ref(Chat.Chat)),
29
+
30
+ /**
31
+ * @default @anthropic/claude-opus-4-6
32
+ */
33
+ model: Schema.optional(ModelName),
34
+
35
+ /**
36
+ * Input object or data.
37
+ * References get auto-resolved.
38
+ */
39
+ input: Schema.Any.pipe(Schema.annotations({ title: 'Input' })),
40
+
41
+ systemInstructions: Schema.optional(Schema.String).annotations({
42
+ description: 'Additional system instructions to add to the system prompt.',
43
+ }),
44
+ }),
45
+ output: Schema.Any,
46
+ // ECHO types that the handler loads via Database.load(). Declaring them here ensures the
47
+ // runtime registers their schema before remote invocation (e.g. via the EDGE function service).
48
+ types: [Routine.Routine, Text.Text, Feed.Feed, Chat.Chat],
49
+ services: [
50
+ AiService.AiService,
51
+ Database.Service,
52
+ Feed.FeedService,
53
+ OpaqueToolkit.OpaqueToolkitProvider,
54
+ OperationRegistry.Service,
55
+ Trace.TraceService,
56
+ ],
57
+ }).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_01RWJEaimVWQv6G7KQb7nyxH","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":"Eo4CCmMIDhgCKkDmvWuElJmvgQqKv/OM8h45Qm9vFiau8OtHTiKeFGzABfFt5k5Oc9XiWXg1jeCrSXFmAcI3XEaKXp6jF8PCj/O0Mg9jbGF1ZGUtb3B1cy00LTY4AEIIdGhpbmtpbmcSDDUOa8R7GBJZ9thEWRoMUDN6YGnPA72hCBI6IjCaJjLZWMigJgV2aqiRxRvBlfCCyrN2xF9Pz4UxQh/uotfEKFGHalNCRUoFOaLl8mIqWaDJIFdnK5kYd+6xF9Ivz65Ynb0Mjzt1o53BQoNtRHIf/VhdR8BKSaEv5NlOuPwd8zAoPCS4A+XXS0zq3y0oP48gxYnMoQUaWlabu1n/AgOntuEJj1yZp1uRGAE="}}},{"type":"reasoning-end","id":"0","metadata":{}},{"type":"tool-params-start","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","name":"completeJob","providerExecuted":false,"metadata":{}},{"type":"tool-params-delta","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","delta":"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","delta":"{\"success\"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","delta":": ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","delta":"\"a","metadata":{}},{"type":"tool-params-delta","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","delta":"ck\"}","metadata":{}},{"type":"tool-params-end","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","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_01BTVEaU6r95t7x3gq8fsC8B","name":"completeJob","params":{"success":"ack"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_01BTVEaU6r95t7x3gq8fsC8B","name":"completeJob","isFailure":false,"result":{},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_01PT5i54k8QVpY13gXEJ9o43","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
+ });