@dxos/assistant-toolkit 0.8.4-main.3fbcb4aa9b → 0.8.4-main.43cb759274

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 (282) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/neutral/{add-artifact-ZUJ5DMSY.mjs → add-artifact-ADKF427P.mjs} +6 -6
  3. package/dist/lib/neutral/{add-artifact-ZUJ5DMSY.mjs.map → add-artifact-ADKF427P.mjs.map} +3 -3
  4. package/dist/lib/neutral/{agent-5NIKAYUK.mjs → agent-4HT4GKKI.mjs} +9 -9
  5. package/dist/lib/neutral/{agent-5NIKAYUK.mjs.map → agent-4HT4GKKI.mjs.map} +2 -2
  6. package/dist/lib/neutral/{chunk-TO5IX24K.mjs → chunk-3ZDYN7BG.mjs} +16 -27
  7. package/dist/lib/neutral/chunk-3ZDYN7BG.mjs.map +7 -0
  8. package/dist/lib/neutral/{chunk-EJAQUAKM.mjs → chunk-53BZWMRB.mjs} +12 -8
  9. package/dist/lib/neutral/chunk-53BZWMRB.mjs.map +7 -0
  10. package/dist/lib/neutral/{chunk-WLR3BGO4.mjs → chunk-6SYN5IV3.mjs} +4 -2
  11. package/dist/lib/neutral/chunk-6SYN5IV3.mjs.map +7 -0
  12. package/dist/lib/neutral/{chunk-QO5SU37C.mjs → chunk-7OQIX2PP.mjs} +4 -4
  13. package/dist/lib/neutral/{chunk-QO5SU37C.mjs.map → chunk-7OQIX2PP.mjs.map} +1 -1
  14. package/dist/lib/neutral/{chunk-P4ZMYO4K.mjs → chunk-ALDU6VDG.mjs} +21 -33
  15. package/dist/lib/neutral/chunk-ALDU6VDG.mjs.map +7 -0
  16. package/dist/lib/neutral/{chunk-GV66MKAQ.mjs → chunk-AYV2KMAV.mjs} +7 -5
  17. package/dist/lib/neutral/chunk-AYV2KMAV.mjs.map +7 -0
  18. package/dist/lib/neutral/{chunk-ROMZO4CB.mjs → chunk-BB6X6NT6.mjs} +13 -10
  19. package/dist/lib/neutral/chunk-BB6X6NT6.mjs.map +7 -0
  20. package/dist/lib/neutral/{chunk-XUF53B6B.mjs → chunk-DBUT6FKM.mjs} +16 -14
  21. package/dist/lib/neutral/chunk-DBUT6FKM.mjs.map +7 -0
  22. package/dist/lib/neutral/{chunk-NR3GTWRC.mjs → chunk-GQRUBCMT.mjs} +8 -13
  23. package/dist/lib/neutral/chunk-GQRUBCMT.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-JRYAD4TG.mjs +67 -0
  25. package/dist/lib/neutral/chunk-JRYAD4TG.mjs.map +7 -0
  26. package/dist/lib/neutral/{chunk-ZFXLTBZG.mjs → chunk-PHZNOLXL.mjs} +5 -3
  27. package/dist/lib/neutral/chunk-PHZNOLXL.mjs.map +7 -0
  28. package/dist/lib/neutral/{chunk-KGU725LW.mjs → chunk-SOLG2NPH.mjs} +4 -7
  29. package/dist/lib/neutral/chunk-SOLG2NPH.mjs.map +7 -0
  30. package/dist/lib/neutral/{chunk-246ACKSH.mjs → chunk-T3RP4AUP.mjs} +24 -20
  31. package/dist/lib/neutral/chunk-T3RP4AUP.mjs.map +7 -0
  32. package/dist/lib/neutral/{chunk-IKBIORQX.mjs → chunk-V3PPVL3C.mjs} +57 -43
  33. package/dist/lib/neutral/chunk-V3PPVL3C.mjs.map +7 -0
  34. package/dist/lib/neutral/{context-add-VB7AOY3G.mjs → context-add-2G2CDRCK.mjs} +4 -4
  35. package/dist/lib/neutral/context-add-2G2CDRCK.mjs.map +7 -0
  36. package/dist/lib/neutral/{context-remove-VCM3VPSO.mjs → context-remove-QQOT57JC.mjs} +4 -4
  37. package/dist/lib/neutral/context-remove-QQOT57JC.mjs.map +7 -0
  38. package/dist/lib/neutral/{create-project-EIF4OJMY.mjs → create-project-LVIH4OLF.mjs} +7 -7
  39. package/dist/lib/neutral/{delete-J3PMWP7Z.mjs → delete-MRER3QMO.mjs} +3 -3
  40. package/dist/lib/neutral/{enable-blueprints-LBDZH2CY.mjs → enable-blueprints-GEIKTSRV.mjs} +12 -12
  41. package/dist/lib/neutral/enable-blueprints-GEIKTSRV.mjs.map +7 -0
  42. package/dist/lib/neutral/{fetch-KHMHV7JR.mjs → fetch-B2AYJK7F.mjs} +2 -2
  43. package/dist/lib/neutral/{fetch-messages-QOBBCTGC.mjs → fetch-messages-RUUU63L2.mjs} +2 -2
  44. package/dist/lib/neutral/{get-context-TN7X7U2H.mjs → get-context-3SXNFRXG.mjs} +10 -10
  45. package/dist/lib/neutral/{get-context-TN7X7U2H.mjs.map → get-context-3SXNFRXG.mjs.map} +3 -3
  46. package/dist/lib/neutral/index.mjs +94 -97
  47. package/dist/lib/neutral/index.mjs.map +3 -3
  48. package/dist/lib/neutral/{load-ALP3TK2E.mjs → load-YWYQ4THR.mjs} +2 -2
  49. package/dist/lib/neutral/meta.json +1 -1
  50. package/dist/lib/neutral/{object-create-Z57Y3X6Y.mjs → object-create-WME2XFGD.mjs} +9 -12
  51. package/dist/lib/neutral/object-create-WME2XFGD.mjs.map +7 -0
  52. package/dist/lib/neutral/{object-delete-X53LS37B.mjs → object-delete-I5OAPI32.mjs} +2 -2
  53. package/dist/lib/neutral/{object-update-GVKSBR7T.mjs → object-update-VCOL62NX.mjs} +3 -3
  54. package/dist/lib/neutral/{object-update-GVKSBR7T.mjs.map → object-update-VCOL62NX.mjs.map} +2 -2
  55. package/dist/lib/neutral/{project-HPHTZ2CI.mjs → project-4BYI2PZC.mjs} +6 -6
  56. package/dist/lib/neutral/{project-rules-IVDHKSKI.mjs → project-rules-7NYDDQ7K.mjs} +5 -5
  57. package/dist/lib/neutral/{prompt-Y7NN7M5D.mjs → prompt-DZP2K2NE.mjs} +6 -6
  58. package/dist/lib/neutral/prompt-DZP2K2NE.mjs.map +7 -0
  59. package/dist/lib/neutral/{qualifier-VDOY5CWU.mjs → qualifier-NLOWVZCM.mjs} +15 -14
  60. package/dist/lib/neutral/qualifier-NLOWVZCM.mjs.map +7 -0
  61. package/dist/lib/neutral/{query-PPJU5622.mjs → query-GZDTQRQ6.mjs} +12 -23
  62. package/dist/lib/neutral/query-GZDTQRQ6.mjs.map +7 -0
  63. package/dist/lib/neutral/{query-U56GNEV6.mjs → query-KBKGBYUO.mjs} +3 -3
  64. package/dist/lib/neutral/{query-blueprints-KXADGHSA.mjs → query-blueprints-MFXXRZBY.mjs} +5 -4
  65. package/dist/lib/neutral/query-blueprints-MFXXRZBY.mjs.map +7 -0
  66. package/dist/lib/neutral/{relation-create-XJ2IX6X3.mjs → relation-create-UHBWQQXS.mjs} +8 -11
  67. package/dist/lib/neutral/relation-create-UHBWQQXS.mjs.map +7 -0
  68. package/dist/lib/neutral/{relation-delete-EP4KXAFL.mjs → relation-delete-ZSB7JOHO.mjs} +2 -2
  69. package/dist/lib/neutral/{save-GWAPLT3Z.mjs → save-B2CSSFDG.mjs} +3 -3
  70. package/dist/lib/neutral/{schema-add-Z5CY6P24.mjs → schema-add-ZJ64RAZK.mjs} +13 -12
  71. package/dist/lib/neutral/schema-add-ZJ64RAZK.mjs.map +7 -0
  72. package/dist/lib/neutral/schema-list-3X3VNYYB.mjs +37 -0
  73. package/dist/lib/neutral/schema-list-3X3VNYYB.mjs.map +7 -0
  74. package/dist/lib/neutral/{sync-issues-4YE5XAK5.mjs → sync-issues-36TS2R7R.mjs} +5 -6
  75. package/dist/lib/neutral/sync-issues-36TS2R7R.mjs.map +7 -0
  76. package/dist/lib/neutral/{sync-triggers-CDMJVW6E.mjs → sync-triggers-MMHKQDNW.mjs} +39 -37
  77. package/dist/lib/neutral/sync-triggers-MMHKQDNW.mjs.map +7 -0
  78. package/dist/lib/neutral/{tag-add-VNIIOVJA.mjs → tag-add-7P5O3IAV.mjs} +4 -5
  79. package/dist/lib/neutral/tag-add-7P5O3IAV.mjs.map +7 -0
  80. package/dist/lib/neutral/{tag-remove-6R2R27W3.mjs → tag-remove-YZIMOFA4.mjs} +4 -5
  81. package/dist/lib/neutral/tag-remove-YZIMOFA4.mjs.map +7 -0
  82. package/dist/lib/neutral/testing/index.mjs +9 -12
  83. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  84. package/dist/lib/neutral/update-tasks-6MJCJ2KC.mjs +13 -0
  85. package/dist/lib/neutral/update-tasks-6MJCJ2KC.mjs.map +7 -0
  86. package/dist/types/src/blueprints/blueprint-manager/functions/definitions.d.ts +12 -15
  87. package/dist/types/src/blueprints/blueprint-manager/functions/definitions.d.ts.map +1 -1
  88. package/dist/types/src/blueprints/blueprint-manager/functions/enable-blueprints.d.ts +7 -8
  89. package/dist/types/src/blueprints/blueprint-manager/functions/enable-blueprints.d.ts.map +1 -1
  90. package/dist/types/src/blueprints/blueprint-manager/functions/index.d.ts.map +1 -1
  91. package/dist/types/src/blueprints/blueprint-manager/functions/query-blueprints.d.ts +6 -6
  92. package/dist/types/src/blueprints/blueprint-manager/functions/query-blueprints.d.ts.map +1 -1
  93. package/dist/types/src/blueprints/database/functions/context-add.d.ts +3 -3
  94. package/dist/types/src/blueprints/database/functions/context-add.d.ts.map +1 -1
  95. package/dist/types/src/blueprints/database/functions/context-remove.d.ts +3 -3
  96. package/dist/types/src/blueprints/database/functions/context-remove.d.ts.map +1 -1
  97. package/dist/types/src/blueprints/database/functions/definitions.d.ts +23 -17
  98. package/dist/types/src/blueprints/database/functions/definitions.d.ts.map +1 -1
  99. package/dist/types/src/blueprints/database/functions/load.d.ts +2 -2
  100. package/dist/types/src/blueprints/database/functions/load.d.ts.map +1 -1
  101. package/dist/types/src/blueprints/database/functions/object-create.d.ts.map +1 -1
  102. package/dist/types/src/blueprints/database/functions/object-delete.d.ts +1 -1
  103. package/dist/types/src/blueprints/database/functions/object-update.d.ts +2 -2
  104. package/dist/types/src/blueprints/database/functions/object-update.d.ts.map +1 -1
  105. package/dist/types/src/blueprints/database/functions/query.d.ts +2 -3
  106. package/dist/types/src/blueprints/database/functions/query.d.ts.map +1 -1
  107. package/dist/types/src/blueprints/database/functions/relation-create.d.ts +3 -3
  108. package/dist/types/src/blueprints/database/functions/relation-create.d.ts.map +1 -1
  109. package/dist/types/src/blueprints/database/functions/relation-delete.d.ts +1 -1
  110. package/dist/types/src/blueprints/database/functions/schema-add.d.ts.map +1 -1
  111. package/dist/types/src/blueprints/database/functions/schema-list.d.ts.map +1 -1
  112. package/dist/types/src/blueprints/database/functions/tag-add.d.ts +6 -3
  113. package/dist/types/src/blueprints/database/functions/tag-add.d.ts.map +1 -1
  114. package/dist/types/src/blueprints/database/functions/tag-remove.d.ts +6 -3
  115. package/dist/types/src/blueprints/database/functions/tag-remove.d.ts.map +1 -1
  116. package/dist/types/src/blueprints/discord/functions/definitions.d.ts.map +1 -1
  117. package/dist/types/src/blueprints/github/functions/definitions.d.ts.map +1 -1
  118. package/dist/types/src/blueprints/linear/functions/definitions.d.ts.map +1 -1
  119. package/dist/types/src/blueprints/linear/functions/sync-issues.d.ts.map +1 -1
  120. package/dist/types/src/blueprints/memory/functions/definitions.d.ts +2 -2
  121. package/dist/types/src/blueprints/memory/functions/definitions.d.ts.map +1 -1
  122. package/dist/types/src/blueprints/memory/functions/delete.d.ts +2 -2
  123. package/dist/types/src/blueprints/planning/functions/index.d.ts +1 -1
  124. package/dist/types/src/blueprints/planning/functions/index.d.ts.map +1 -1
  125. package/dist/types/src/blueprints/planning/functions/update-tasks.d.ts +14 -1
  126. package/dist/types/src/blueprints/planning/functions/update-tasks.d.ts.map +1 -1
  127. package/dist/types/src/blueprints/planning/functions/update-tasks.test.d.ts +2 -0
  128. package/dist/types/src/blueprints/planning/functions/update-tasks.test.d.ts.map +1 -0
  129. package/dist/types/src/blueprints/project/functions/add-artifact.d.ts +1 -5
  130. package/dist/types/src/blueprints/project/functions/add-artifact.d.ts.map +1 -1
  131. package/dist/types/src/blueprints/project/functions/definitions.d.ts +60 -45
  132. package/dist/types/src/blueprints/project/functions/definitions.d.ts.map +1 -1
  133. package/dist/types/src/blueprints/project/functions/get-context.d.ts +1 -12
  134. package/dist/types/src/blueprints/project/functions/get-context.d.ts.map +1 -1
  135. package/dist/types/src/blueprints/project/functions/qualifier.d.ts +3 -71
  136. package/dist/types/src/blueprints/project/functions/qualifier.d.ts.map +1 -1
  137. package/dist/types/src/blueprints/project-wizard/functions/create-project.d.ts +23 -19
  138. package/dist/types/src/blueprints/project-wizard/functions/create-project.d.ts.map +1 -1
  139. package/dist/types/src/blueprints/project-wizard/functions/definitions.d.ts +45 -38
  140. package/dist/types/src/blueprints/project-wizard/functions/definitions.d.ts.map +1 -1
  141. package/dist/types/src/blueprints/project-wizard/functions/sync-triggers.d.ts +21 -17
  142. package/dist/types/src/blueprints/project-wizard/functions/sync-triggers.d.ts.map +1 -1
  143. package/dist/types/src/blueprints/testing.d.ts +4 -4
  144. package/dist/types/src/blueprints/testing.d.ts.map +1 -1
  145. package/dist/types/src/blueprints/websearch/functions/definitions.d.ts.map +1 -1
  146. package/dist/types/src/crud/graph.d.ts +8 -11
  147. package/dist/types/src/crud/graph.d.ts.map +1 -1
  148. package/dist/types/src/errors.d.ts +3 -3
  149. package/dist/types/src/errors.d.ts.map +1 -1
  150. package/dist/types/src/functions/agent/definitions.d.ts +14 -23
  151. package/dist/types/src/functions/agent/definitions.d.ts.map +1 -1
  152. package/dist/types/src/sync/sync.d.ts +1 -2
  153. package/dist/types/src/sync/sync.d.ts.map +1 -1
  154. package/dist/types/src/testing/plugins.d.ts +1 -1
  155. package/dist/types/src/testing/plugins.d.ts.map +1 -1
  156. package/dist/types/src/types/Agent.d.ts +25 -24
  157. package/dist/types/src/types/Agent.d.ts.map +1 -1
  158. package/dist/types/src/types/Chat.d.ts +17 -20
  159. package/dist/types/src/types/Chat.d.ts.map +1 -1
  160. package/dist/types/src/types/McpServer.d.ts +1 -2
  161. package/dist/types/src/types/McpServer.d.ts.map +1 -1
  162. package/dist/types/src/types/Memory.d.ts +1 -2
  163. package/dist/types/src/types/Memory.d.ts.map +1 -1
  164. package/dist/types/src/types/Plan.d.ts +15 -17
  165. package/dist/types/src/types/Plan.d.ts.map +1 -1
  166. package/dist/types/tsconfig.tsbuildinfo +1 -1
  167. package/package.json +30 -31
  168. package/src/blueprints/automation/blueprint.ts +3 -3
  169. package/src/blueprints/blueprint-manager/blueprint.conversations.json +1 -1
  170. package/src/blueprints/blueprint-manager/blueprint.test.ts +24 -67
  171. package/src/blueprints/blueprint-manager/blueprint.ts +5 -5
  172. package/src/blueprints/blueprint-manager/functions/definitions.ts +11 -20
  173. package/src/blueprints/blueprint-manager/functions/enable-blueprints.ts +10 -7
  174. package/src/blueprints/blueprint-manager/functions/index.ts +0 -1
  175. package/src/blueprints/blueprint-manager/functions/query-blueprints.ts +3 -2
  176. package/src/blueprints/browser/blueprint.conversations.json +1 -0
  177. package/src/blueprints/browser/blueprint.test.ts +4 -3
  178. package/src/blueprints/database/blueprint.conversations.json +1 -1
  179. package/src/blueprints/database/blueprint.test.ts +25 -25
  180. package/src/blueprints/database/functions/context-add.ts +2 -2
  181. package/src/blueprints/database/functions/context-remove.ts +2 -2
  182. package/src/blueprints/database/functions/definitions.ts +54 -40
  183. package/src/blueprints/database/functions/object-create.ts +8 -5
  184. package/src/blueprints/database/functions/object-update.ts +1 -1
  185. package/src/blueprints/database/functions/query.ts +16 -11
  186. package/src/blueprints/database/functions/relation-create.ts +7 -4
  187. package/src/blueprints/database/functions/schema-add.ts +7 -12
  188. package/src/blueprints/database/functions/schema-list.ts +12 -7
  189. package/src/blueprints/database/functions/tag-add.ts +2 -3
  190. package/src/blueprints/database/functions/tag-remove.ts +2 -3
  191. package/src/blueprints/discord/functions/definitions.ts +3 -1
  192. package/src/blueprints/discord/functions/fetch-messages.test.ts +7 -2
  193. package/src/blueprints/github/functions/definitions.ts +3 -1
  194. package/src/blueprints/linear/functions/definitions.ts +3 -1
  195. package/src/blueprints/linear/functions/linear.test.ts +1 -2
  196. package/src/blueprints/linear/functions/sync-issues.ts +1 -2
  197. package/src/blueprints/memory/blueprint.conversations.json +1 -1
  198. package/src/blueprints/memory/blueprint.test.ts +2 -2
  199. package/src/blueprints/memory/functions/definitions.ts +7 -3
  200. package/src/blueprints/planning/blueprint.ts +1 -1
  201. package/src/blueprints/planning/functions/index.ts +1 -1
  202. package/src/blueprints/planning/functions/{definitions.ts → update-tasks.md} +29 -50
  203. package/src/blueprints/planning/functions/update-tasks.test.ts +55 -0
  204. package/src/blueprints/planning/functions/update-tasks.ts +27 -3
  205. package/src/blueprints/project/blueprint.conversations.json +1 -1
  206. package/src/blueprints/project/blueprint.test.ts +14 -16
  207. package/src/blueprints/project/blueprint.ts +1 -1
  208. package/src/blueprints/project/functions/add-artifact.ts +1 -0
  209. package/src/blueprints/project/functions/agent.ts +4 -4
  210. package/src/blueprints/project/functions/definitions.ts +17 -14
  211. package/src/blueprints/project/functions/get-context.ts +5 -4
  212. package/src/blueprints/project/functions/qualifier.ts +8 -7
  213. package/src/blueprints/project-wizard/blueprint.ts +1 -1
  214. package/src/blueprints/project-wizard/functions/definitions.ts +11 -8
  215. package/src/blueprints/project-wizard/functions/sync-triggers.ts +33 -35
  216. package/src/blueprints/testing.ts +10 -4
  217. package/src/blueprints/websearch/blueprint.conversations.json +1 -1
  218. package/src/blueprints/websearch/functions/definitions.ts +3 -1
  219. package/src/crud/graph.test.ts +1 -1
  220. package/src/crud/graph.ts +143 -153
  221. package/src/errors.ts +3 -3
  222. package/src/functions/agent/definitions.ts +5 -3
  223. package/src/functions/agent/prompt.conversations.json +1 -1
  224. package/src/functions/agent/prompt.test.ts +10 -13
  225. package/src/functions/agent/prompt.ts +3 -3
  226. package/src/sync/sync.ts +7 -6
  227. package/src/testing/plugins.tsx +10 -15
  228. package/src/types/Agent.ts +27 -35
  229. package/src/types/Chat.ts +10 -20
  230. package/src/types/McpServer.ts +4 -10
  231. package/src/types/Memory.ts +4 -7
  232. package/src/types/Plan.ts +4 -11
  233. package/dist/lib/neutral/chunk-246ACKSH.mjs.map +0 -7
  234. package/dist/lib/neutral/chunk-EJAQUAKM.mjs.map +0 -7
  235. package/dist/lib/neutral/chunk-FIGO6CA6.mjs +0 -140
  236. package/dist/lib/neutral/chunk-FIGO6CA6.mjs.map +0 -7
  237. package/dist/lib/neutral/chunk-GV66MKAQ.mjs.map +0 -7
  238. package/dist/lib/neutral/chunk-IKBIORQX.mjs.map +0 -7
  239. package/dist/lib/neutral/chunk-KGU725LW.mjs.map +0 -7
  240. package/dist/lib/neutral/chunk-NR3GTWRC.mjs.map +0 -7
  241. package/dist/lib/neutral/chunk-P4ZMYO4K.mjs.map +0 -7
  242. package/dist/lib/neutral/chunk-ROMZO4CB.mjs.map +0 -7
  243. package/dist/lib/neutral/chunk-TO5IX24K.mjs.map +0 -7
  244. package/dist/lib/neutral/chunk-WLR3BGO4.mjs.map +0 -7
  245. package/dist/lib/neutral/chunk-XUF53B6B.mjs.map +0 -7
  246. package/dist/lib/neutral/chunk-ZFXLTBZG.mjs.map +0 -7
  247. package/dist/lib/neutral/context-add-VB7AOY3G.mjs.map +0 -7
  248. package/dist/lib/neutral/context-remove-VCM3VPSO.mjs.map +0 -7
  249. package/dist/lib/neutral/enable-blueprints-LBDZH2CY.mjs.map +0 -7
  250. package/dist/lib/neutral/object-create-Z57Y3X6Y.mjs.map +0 -7
  251. package/dist/lib/neutral/prompt-Y7NN7M5D.mjs.map +0 -7
  252. package/dist/lib/neutral/qualifier-VDOY5CWU.mjs.map +0 -7
  253. package/dist/lib/neutral/query-PPJU5622.mjs.map +0 -7
  254. package/dist/lib/neutral/query-blueprints-KXADGHSA.mjs.map +0 -7
  255. package/dist/lib/neutral/relation-create-XJ2IX6X3.mjs.map +0 -7
  256. package/dist/lib/neutral/schema-add-Z5CY6P24.mjs.map +0 -7
  257. package/dist/lib/neutral/schema-list-W326VPVX.mjs +0 -38
  258. package/dist/lib/neutral/schema-list-W326VPVX.mjs.map +0 -7
  259. package/dist/lib/neutral/sync-issues-4YE5XAK5.mjs.map +0 -7
  260. package/dist/lib/neutral/sync-triggers-CDMJVW6E.mjs.map +0 -7
  261. package/dist/lib/neutral/tag-add-VNIIOVJA.mjs.map +0 -7
  262. package/dist/lib/neutral/tag-remove-6R2R27W3.mjs.map +0 -7
  263. package/dist/lib/neutral/update-blueprints-N2AK2VUR.mjs +0 -16
  264. package/dist/lib/neutral/update-blueprints-N2AK2VUR.mjs.map +0 -7
  265. package/dist/lib/neutral/update-tasks-H7SWIFQL.mjs +0 -46
  266. package/dist/lib/neutral/update-tasks-H7SWIFQL.mjs.map +0 -7
  267. package/dist/types/src/blueprints/blueprint-manager/functions/update-blueprints.d.ts +0 -4
  268. package/dist/types/src/blueprints/blueprint-manager/functions/update-blueprints.d.ts.map +0 -1
  269. package/dist/types/src/blueprints/planning/functions/definitions.d.ts +0 -11
  270. package/dist/types/src/blueprints/planning/functions/definitions.d.ts.map +0 -1
  271. package/src/blueprints/blueprint-manager/functions/update-blueprints.ts +0 -18
  272. /package/dist/lib/neutral/{create-project-EIF4OJMY.mjs.map → create-project-LVIH4OLF.mjs.map} +0 -0
  273. /package/dist/lib/neutral/{delete-J3PMWP7Z.mjs.map → delete-MRER3QMO.mjs.map} +0 -0
  274. /package/dist/lib/neutral/{fetch-KHMHV7JR.mjs.map → fetch-B2AYJK7F.mjs.map} +0 -0
  275. /package/dist/lib/neutral/{fetch-messages-QOBBCTGC.mjs.map → fetch-messages-RUUU63L2.mjs.map} +0 -0
  276. /package/dist/lib/neutral/{load-ALP3TK2E.mjs.map → load-YWYQ4THR.mjs.map} +0 -0
  277. /package/dist/lib/neutral/{object-delete-X53LS37B.mjs.map → object-delete-I5OAPI32.mjs.map} +0 -0
  278. /package/dist/lib/neutral/{project-HPHTZ2CI.mjs.map → project-4BYI2PZC.mjs.map} +0 -0
  279. /package/dist/lib/neutral/{project-rules-IVDHKSKI.mjs.map → project-rules-7NYDDQ7K.mjs.map} +0 -0
  280. /package/dist/lib/neutral/{query-U56GNEV6.mjs.map → query-KBKGBYUO.mjs.map} +0 -0
  281. /package/dist/lib/neutral/{relation-delete-EP4KXAFL.mjs.map → relation-delete-ZSB7JOHO.mjs.map} +0 -0
  282. /package/dist/lib/neutral/{save-GWAPLT3Z.mjs.map → save-B2CSSFDG.mjs.map} +0 -0
package/src/crud/graph.ts CHANGED
@@ -11,23 +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 { Entity, Filter, Obj, Query, Type } from '@dxos/echo';
15
- import { Database } from '@dxos/echo';
16
- import { type Queue } from '@dxos/echo-db';
14
+ import { Database, Entity, Feed, Filter, Obj, Query, Scope, Type } from '@dxos/echo';
17
15
  import { isEncodedReference } from '@dxos/echo-protocol';
18
16
  import {
19
17
  ReferenceAnnotationId,
20
- RelationSourceDXNId,
21
18
  RelationSourceId,
22
- RelationTargetDXNId,
23
19
  RelationTargetId,
24
20
  createObject,
25
21
  getTypeAnnotation,
26
22
  getTypeIdentifierAnnotation,
27
23
  } from '@dxos/echo/internal';
28
24
  import { mapAst } from '@dxos/effect';
29
- import { ContextQueueService } from '@dxos/functions';
30
- import { DXN, ObjectId } from '@dxos/keys';
25
+ import { DXN, EID, EntityId, type URI } from '@dxos/keys';
31
26
  import { log } from '@dxos/log';
32
27
  import { deepMapValues, isNonNullable, trim } from '@dxos/util';
33
28
 
@@ -37,8 +32,7 @@ export const Subgraph = Schema.Struct({
37
32
  objects: Schema.Array(Schema.Any),
38
33
  });
39
34
 
40
- export interface Subgraph extends Schema.Schema.Type<typeof Subgraph> {}
41
-
35
+ export type Subgraph = Schema.Schema.Type<typeof Subgraph>;
42
36
  export type RelatedSchema = {
43
37
  schema: Type.AnyEntity;
44
38
  kind: 'reference' | 'relation';
@@ -52,19 +46,19 @@ export type RelatedSchema = {
52
46
  * @returns
53
47
  */
54
48
  export const findRelatedSchema = async (db: Database.Database, anchor: Type.AnyEntity): Promise<RelatedSchema[]> => {
55
- // TODO(dmaretskyi): Query stored schemas.
56
- const allSchemas = await db.graph.schemaRegistry.query().run();
49
+ const allSchemas = await db.query(Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry())).run();
57
50
 
58
51
  // TODO(dmaretskyi): Also do references.
59
52
  return allSchemas
60
53
  .filter((schema) => {
61
- if (getTypeAnnotation(schema)?.kind !== Entity.Kind.Relation) {
54
+ const annotation = getTypeAnnotation(Type.getSchema(schema));
55
+ if (annotation?.kind !== Entity.Kind.Relation) {
62
56
  return false;
63
57
  }
64
58
 
65
59
  return (
66
- isSchemaAddressableByDxn(anchor, DXN.parse(getTypeAnnotation(schema)!.sourceSchema!)) ||
67
- isSchemaAddressableByDxn(anchor, DXN.parse(getTypeAnnotation(schema)!.targetSchema!))
60
+ isSchemaAddressableByDXN(anchor, annotation.sourceSchema!) ||
61
+ isSchemaAddressableByDXN(anchor, annotation.targetSchema!)
68
62
  );
69
63
  })
70
64
  .map(
@@ -79,17 +73,12 @@ export const findRelatedSchema = async (db: Database.Database, anchor: Type.AnyE
79
73
  * Non-strict DXN comparison.
80
74
  * Returns true if the DXN could be resolved to the schema.
81
75
  */
82
- const isSchemaAddressableByDxn = (schema: Type.AnyEntity, dxn: DXN): boolean => {
83
- if (getTypeIdentifierAnnotation(schema) === dxn.toString()) {
76
+ const isSchemaAddressableByDXN = (type: Type.AnyEntity, dxn: DXN.DXN): boolean => {
77
+ if (getTypeIdentifierAnnotation(Type.getSchema(type)) === dxn) {
84
78
  return true;
85
79
  }
86
80
 
87
- const t = dxn.asTypeDXN();
88
- if (t) {
89
- return t.type === Type.getTypename(schema);
90
- }
91
-
92
- return false;
81
+ return DXN.getName(dxn) === Type.getTypename(type);
93
82
  };
94
83
 
95
84
  /**
@@ -106,7 +95,7 @@ export const LocalSearchToolkit = Toolkit.make(
106
95
  },
107
96
  success: Schema.Unknown,
108
97
  failure: Schema.Never,
109
- dependencies: [Database.Service],
98
+ dependencies: [Database.Service, Feed.FeedService],
110
99
  }),
111
100
  );
112
101
 
@@ -115,11 +104,11 @@ export const LocalSearchHandler = LocalSearchToolkit.toLayer({
115
104
  const objects = yield* Database.runQuery(Query.select(Filter.text(query, { type: 'vector' })));
116
105
  const results = [...objects];
117
106
 
118
- const option = yield* Effect.serviceOption(ContextQueueService);
119
- if (Option.isSome(option)) {
120
- const queueObjects = yield* Effect.promise(() => option.value.queue.queryObjects());
121
- // TODO(dmaretskyi): Text search on the queue.
122
- results.push(...queueObjects);
107
+ const feedOption = yield* Effect.serviceOption(Feed.ContextFeedService);
108
+ if (Option.isSome(feedOption)) {
109
+ const feedObjects = yield* Feed.runQuery(feedOption.value.feed, Filter.everything());
110
+ // TODO(dmaretskyi): Text search on the feed.
111
+ results.push(...feedObjects);
123
112
  }
124
113
 
125
114
  return trim`
@@ -150,7 +139,7 @@ export const makeGraphWriterToolkit = ({ schema }: { schema: Type.AnyEntity[] })
150
139
  parameters: createExtractionSchema(schema).fields,
151
140
  success: Schema.Unknown,
152
141
  failure: Schema.Never,
153
- dependencies: [Database.Service, ContextQueueService],
142
+ dependencies: [Database.Service, Feed.ContextFeedService, Feed.FeedService],
154
143
  }).annotateContext(Context.make(GraphWriterSchema, { schema })),
155
144
  );
156
145
  };
@@ -160,7 +149,7 @@ export const makeGraphWriterHandler = (
160
149
  {
161
150
  onAppend,
162
151
  }: {
163
- onAppend?: (object: DXN[]) => void;
152
+ onAppend?: (object: URI.URI[]) => void;
164
153
  } = {},
165
154
  ) => {
166
155
  const { schema } = Context.get(
@@ -171,11 +160,11 @@ export const makeGraphWriterHandler = (
171
160
  return toolkit.toLayer({
172
161
  graph_writer: Effect.fn(function* (input) {
173
162
  const { db } = yield* Database.Service;
174
- const { queue } = yield* ContextQueueService;
175
- const data = yield* Effect.promise(() => sanitizeObjects(schema, input as any, db, queue));
176
- yield* Effect.promise(() => queue.append(data as Obj.Unknown[]));
163
+ const { feed } = yield* Feed.ContextFeedService;
164
+ const data = yield* sanitizeObjects(schema, input as any, db, feed);
165
+ yield* Feed.append(feed, data as Obj.Unknown[]);
177
166
 
178
- const dxns = data.map((obj) => Obj.getDXN(obj));
167
+ const dxns = data.map((obj) => Entity.getURI(obj));
179
168
  onAppend?.(dxns);
180
169
  return dxns;
181
170
  }),
@@ -188,149 +177,150 @@ export const makeGraphWriterHandler = (
188
177
  export const createExtractionSchema = (types: Type.AnyEntity[]) => {
189
178
  return Schema.Struct({
190
179
  ...Object.fromEntries(
191
- types.map(preprocessSchema).map((schema, index) => [
192
- `objects_${getSanitizedSchemaName(types[index])}`,
193
- Schema.optional(Schema.Array(schema)).annotations({
194
- description: `The objects of type: ${Type.getDXN(types[index])?.asTypeDXN()!.type}. ${SchemaAST.getDescriptionAnnotation(types[index].ast).pipe(Option.getOrElse(() => ''))}`,
195
- }),
196
- ]),
180
+ types
181
+ .map((type) => preprocessSchema(Type.getSchema(type)))
182
+ .map((schema, index) => [
183
+ `objects_${getSanitizedSchemaName(types[index])}`,
184
+ Schema.optional(Schema.Array(schema)).annotations({
185
+ description: `The objects of type: ${DXN.getName(DXN.tryMake(Type.getURI(types[index])!)!)}. ${SchemaAST.getDescriptionAnnotation(Type.getSchema(types[index]).ast).pipe(Option.getOrElse(() => ''))}`,
186
+ }),
187
+ ]),
197
188
  ),
198
189
  });
199
190
  };
200
191
 
201
192
  export const getSanitizedSchemaName = (schema: Type.AnyEntity) => {
202
- return Type.getDXN(schema)!
203
- .asTypeDXN()!
204
- .type.replaceAll(/[^a-zA-Z0-9]+/g, '_');
193
+ return DXN.getName(DXN.tryMake(Type.getURI(schema)!)!).replaceAll(/[^a-zA-Z0-9]+/g, '_');
205
194
  };
206
195
 
207
- export const sanitizeObjects = async (
196
+ export const sanitizeObjects = (
208
197
  types: Type.AnyEntity[],
209
198
  data: Record<string, readonly unknown[]>,
210
199
  db: Database.Database,
211
- queue?: Queue,
212
- ): Promise<Obj.Unknown[]> => {
213
- const entries = types
214
- .map(
215
- (type) =>
216
- data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
217
- data: object,
218
- schema: type,
219
- })) ?? [],
220
- )
221
- .flat();
222
-
223
- const idMap = new Map<string, string>();
224
- const existingIds = new Set<ObjectId>();
225
- const enitties = new Map<ObjectId, Entity.Unknown>();
226
-
227
- const resolveId = (id: string): DXN | undefined => {
228
- if (ObjectId.isValid(id)) {
229
- existingIds.add(id);
230
- return DXN.fromLocalObjectId(id);
231
- }
200
+ feed?: Feed.Feed,
201
+ ): Effect.Effect<Entity.Unknown[], never, Feed.FeedService> =>
202
+ Effect.gen(function* () {
203
+ const entries = types
204
+ .map(
205
+ (type) =>
206
+ data[`objects_${getSanitizedSchemaName(type)}`]?.map((object: any) => ({
207
+ data: object,
208
+ schema: type,
209
+ })) ?? [],
210
+ )
211
+ .flat();
212
+
213
+ const idMap = new Map<string, string>();
214
+ const existingIds = new Set<EntityId>();
215
+ const enitties = new Map<EntityId, Entity.Unknown>();
216
+
217
+ const resolveId = (id: string): EID.EID | undefined => {
218
+ if (EntityId.isValid(id)) {
219
+ existingIds.add(id);
220
+ return EID.make({ entityId: id });
221
+ }
232
222
 
233
- const mappedId = idMap.get(id);
234
- if (mappedId) {
235
- return DXN.fromLocalObjectId(mappedId);
236
- }
223
+ const mappedId = idMap.get(id);
224
+ if (mappedId && EntityId.isValid(mappedId)) {
225
+ return EID.make({ entityId: mappedId });
226
+ }
237
227
 
238
- return undefined;
239
- };
228
+ return undefined;
229
+ };
240
230
 
241
- const res = entries
242
- .map((entry) => {
243
- // This entry mutates existing object.
244
- if (ObjectId.isValid(entry.data.id)) {
231
+ const res = entries
232
+ .map((entry) => {
233
+ // This entry mutates existing object.
234
+ if (EntityId.isValid(entry.data.id)) {
235
+ return entry;
236
+ }
237
+
238
+ idMap.set(entry.data.id, EntityId.random());
239
+ entry.data.id = idMap.get(entry.data.id);
245
240
  return entry;
246
- }
241
+ })
242
+ .map((entry) => {
243
+ const data = deepMapValues(entry.data, (value, recurse) => {
244
+ if (isEncodedReference(value)) {
245
+ const ref = value['/'];
246
+ const id = resolveId(ref);
247
+
248
+ if (id) {
249
+ // Link to an existing object.
250
+ return { '/': id.toString() };
251
+ } else {
252
+ // Search URIs?
253
+ return { '/': `search:?q=${encodeURIComponent(ref)}` };
254
+ }
255
+ }
247
256
 
248
- idMap.set(entry.data.id, ObjectId.random());
249
- entry.data.id = idMap.get(entry.data.id);
250
- return entry;
251
- })
252
- .map((entry) => {
253
- const data = deepMapValues(entry.data, (value, recurse) => {
254
- if (isEncodedReference(value)) {
255
- const ref = value['/'];
256
- const id = resolveId(ref);
257
-
258
- if (id) {
259
- // Link to an existing object.
260
- return { '/': id.toString() };
261
- } else {
262
- // Search URIs?
263
- return { '/': `search:?q=${encodeURIComponent(ref)}` };
257
+ return recurse(value);
258
+ });
259
+
260
+ let sourceUri: EID.EID | undefined;
261
+ let targetUri: EID.EID | undefined;
262
+ if (Entity.getKind(Type.getSchema(entry.schema)) === 'relation') {
263
+ sourceUri = resolveId(data.source);
264
+ if (!sourceUri) {
265
+ log.warn('source not found', { source: data.source });
264
266
  }
267
+ targetUri = resolveId(data.target);
268
+ if (!targetUri) {
269
+ log.warn('target not found', { target: data.target });
270
+ }
271
+ delete data.source;
272
+ delete data.target;
265
273
  }
266
274
 
267
- return recurse(value);
268
- });
275
+ return {
276
+ data,
277
+ schema: entry.schema,
278
+ sourceUri,
279
+ targetUri,
280
+ };
281
+ })
282
+ .filter((object) => !existingIds.has(object.data.id)); // TODO(dmaretskyi): This dissallows updating existing objects.
283
+
284
+ // TODO(dmaretskyi): Use ref resolver.
285
+ const dbObjects = yield* Effect.promise(() => db.query(Query.select(Filter.id(...existingIds))).run());
286
+ const feedObjects = feed && existingIds.size > 0 ? yield* Feed.runQuery(feed, Filter.id(...existingIds)) : [];
287
+ const objects = [...dbObjects, ...feedObjects].filter(isNonNullable);
288
+
289
+ // TODO(dmaretskyi): Returns everything if IDs are empty!
290
+ log.info('objects', { dbObjects, feedObjects, existingIds });
291
+ const missing = Array.from(existingIds).filter((id) => !objects.some((object) => object.id === id));
292
+ if (missing.length > 0) {
293
+ throw new Error(`Object IDs do not point to existing objects: ${missing.join(', ')}`);
294
+ }
269
295
 
270
- if (Entity.getKind(entry.schema) === 'relation') {
271
- const sourceDxn = resolveId(data.source);
272
- if (!sourceDxn) {
273
- log.warn('source not found', { source: data.source });
296
+ return res.flatMap(({ data, schema, sourceUri, targetUri }) => {
297
+ let skip = false;
298
+ if (sourceUri) {
299
+ const id = EID.getEntityId(sourceUri);
300
+ const obj = objects.find((object) => object.id === id) ?? (id ? enitties.get(id) : undefined);
301
+ if (obj) {
302
+ data[RelationSourceId] = obj;
303
+ } else {
304
+ skip = true;
274
305
  }
275
- const targetDxn = resolveId(data.target);
276
- if (!targetDxn) {
277
- log.warn('target not found', { target: data.target });
278
- }
279
- delete data.source;
280
- delete data.target;
281
- data[RelationSourceDXNId] = sourceDxn;
282
- data[RelationTargetDXNId] = targetDxn;
283
306
  }
284
-
285
- return {
286
- data,
287
- schema: entry.schema,
288
- };
289
- })
290
- .filter((object) => !existingIds.has(object.data.id)); // TODO(dmaretskyi): This dissallows updating existing objects.
291
-
292
- // TODO(dmaretskyi): Use ref resolver.
293
- const dbObjects = await db.query(Query.select(Filter.id(...existingIds))).run();
294
- const queueObjects = (await queue?.getObjectsById([...existingIds])) ?? [];
295
- const objects = [...dbObjects, ...queueObjects].filter(isNonNullable);
296
-
297
- // TODO(dmaretskyi): Returns everything if IDs are empty!
298
- log.info('objects', { dbObjects, queueObjects, existingIds });
299
- const missing = Array.from(existingIds).filter((id) => !objects.some((object) => object.id === id));
300
- if (missing.length > 0) {
301
- throw new Error(`Object IDs do not point to existing objects: ${missing.join(', ')}`);
302
- }
303
-
304
- return res.flatMap(({ data, schema }) => {
305
- let skip = false;
306
- if (RelationSourceDXNId in data) {
307
- const id = (data[RelationSourceDXNId] as DXN).asEchoDXN()?.echoId;
308
- const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
309
- if (obj) {
310
- delete data[RelationSourceDXNId];
311
- data[RelationSourceId] = obj;
312
- } else {
313
- skip = true;
307
+ if (targetUri) {
308
+ const id = EID.getEntityId(targetUri);
309
+ const obj = objects.find((object) => object.id === id) ?? (id ? enitties.get(id) : undefined);
310
+ if (obj) {
311
+ data[RelationTargetId] = obj;
312
+ } else {
313
+ skip = true;
314
+ }
314
315
  }
315
- }
316
- if (RelationTargetDXNId in data) {
317
- const id = (data[RelationTargetDXNId] as DXN).asEchoDXN()?.echoId;
318
- const obj = objects.find((object) => object.id === id) ?? enitties.get(id!);
319
- if (obj) {
320
- delete data[RelationTargetDXNId];
321
- data[RelationTargetId] = obj;
322
- } else {
323
- skip = true;
316
+ if (!skip) {
317
+ const obj = createObject(schema, data);
318
+ enitties.set(obj.id, obj);
319
+ return [obj];
324
320
  }
325
- }
326
- if (!skip) {
327
- const obj = createObject(schema, data);
328
- enitties.set(obj.id, obj);
329
- return [obj];
330
- }
331
- return [];
321
+ return [];
322
+ });
332
323
  });
333
- };
334
324
 
335
325
  const SoftRef = Schema.Struct({
336
326
  '/': Schema.String,
package/src/errors.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { BaseError } from '@dxos/errors';
6
- import { DXN } from '@dxos/keys';
6
+ import { type EID } from '@dxos/keys';
7
7
 
8
8
  /**
9
9
  * Agent could not execute prompt.
@@ -13,8 +13,8 @@ export class PromptError extends BaseError.extend('PromptError') {
13
13
  message: string,
14
14
  context: {
15
15
  description?: string;
16
- prompt?: DXN.String;
17
- chat?: DXN.String;
16
+ prompt?: EID.EID;
17
+ chat?: EID.EID;
18
18
  },
19
19
  ) {
20
20
  super({
@@ -7,6 +7,7 @@ import * as Schema from 'effect/Schema';
7
7
  import { AiService, OpaqueToolkit, ModelName } from '@dxos/ai';
8
8
  import { Routine, Trace, Operation, OperationRegistry } from '@dxos/compute';
9
9
  import { Database, Feed, Ref } from '@dxos/echo';
10
+ import { DXN } from '@dxos/keys';
10
11
  import { Text } from '@dxos/schema';
11
12
 
12
13
  import * as Chat from '../../types/Chat';
@@ -14,9 +15,10 @@ import * as Chat from '../../types/Chat';
14
15
  // TODO(dmaretskyi): Rename to RunRoutine.
15
16
  export const AgentPrompt = Operation.make({
16
17
  meta: {
17
- key: 'org.dxos.function.prompt',
18
+ key: DXN.make('org.dxos.function.prompt'),
18
19
  name: 'Run Routine',
19
20
  description: 'Agentic worker that executes a provided prompt using blueprints and tools.',
21
+ icon: 'ph--brain--regular',
20
22
  },
21
23
  input: Schema.Struct({
22
24
  prompt: Ref.Ref(Routine.Routine),
@@ -29,8 +31,8 @@ export const AgentPrompt = Operation.make({
29
31
  /**
30
32
  * @default @anthropic/claude-opus-4-6
31
33
  */
32
-
33
34
  model: Schema.optional(ModelName),
35
+
34
36
  /**
35
37
  * Input object or data.
36
38
  * References get auto-resolved.
@@ -53,4 +55,4 @@ export const AgentPrompt = Operation.make({
53
55
  OperationRegistry.Service,
54
56
  Trace.TraceService,
55
57
  ],
56
- }).pipe(Operation.intrinsic);
58
+ });
@@ -1 +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_01BNfgUBNqETGfNka6Y58SUS","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/O0Mg9jbGF1ZGUtb3B1cy00LTY4ABIMidROWDebGP+ji8voGgyiyrnCLJU9DZTeWc0iMJ5ewfC96fa6DHSOj+APcM0VyN0tJiYPjIJI7DxYTiu277zCDVNdAUxNb/k45dQGripZikOeASjJaTuovSm8Ni01mepSojCietSMDfM1xBLbnyPHKxucO7akJRwDczuw8req/NjtOhY492FCt1lagajkZq8/rsICFxutxbPXyHXSY04cd/2+oY9cRAQYAQ=="}}},{"type":"reasoning-end","id":"0","metadata":{}},{"type":"tool-params-start","id":"toolu_01VQiUHtyF77TZd49DrKhnPR","name":"completeJob","providerExecuted":false,"metadata":{}},{"type":"tool-params-delta","id":"toolu_01VQiUHtyF77TZd49DrKhnPR","delta":"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01VQiUHtyF77TZd49DrKhnPR","delta":"{\"success","metadata":{}},{"type":"tool-params-delta","id":"toolu_01VQiUHtyF77TZd49DrKhnPR","delta":"\": \"ack\"}","metadata":{}},{"type":"tool-params-end","id":"toolu_01VQiUHtyF77TZd49DrKhnPR","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_01VQiUHtyF77TZd49DrKhnPR","name":"completeJob","params":{"success":"ack"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_01VQiUHtyF77TZd49DrKhnPR","name":"completeJob","isFailure":false,"result":{},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_017Q7gpzDqQTqmKWouYU2oKt","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"}}}}]}]}
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_01JstbpndWJDAhVwAppVJz2H","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 user wants me to reply with a single word: \"ack\".","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"","metadata":{"anthropic":{"type":"thinking","signature":"EvsBCmMIDhgCKkDoETBa+lesagv7ixB9LGrYHpBYfS/DCnRnegAetRGGWDl0kkFyqVQI7oDc+ZWbyk9tB+4ePqoqNXQXwE3240/HMg9jbGF1ZGUtb3B1cy00LTY4AEIIdGhpbmtpbmcSDFVIZlew/AFp1rmNoxoMPw+kyp+9hoNL5WyHIjDdm7hZK7hOH93slrwJoeXIuYMlv70L5mOQbDviNfFQyGfbuluo3tzWampRVGtohCgqRtiIkY7cWA700K9SVqH4mMfq1sjQ7yYuCRMv2lT7PrbCp3IRJmncUU6avNwBVX6E/hMO7ml/pORVNgsnB8Tn6FrYKqMFENAYAQ=="}}},{"type":"reasoning-end","id":"0","metadata":{}},{"type":"tool-params-start","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","name":"completeJob","providerExecuted":false,"metadata":{}},{"type":"tool-params-delta","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","delta":"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","delta":"{\"success\"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","delta":": ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","delta":"\"ack\"}","metadata":{}},{"type":"tool-params-end","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","metadata":{}},{"type":"finish","reason":"tool-calls","usage":{"inputTokens":757,"outputTokens":85,"totalTokens":842},"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":60,"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\".","options":{}},{"type":"tool-call","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","name":"completeJob","params":{"success":"ack"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_01KDviPNKjzY2nh9cGmo4oKm","name":"completeJob","isFailure":false,"result":{},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_01Pz14sZtxk8PRuR9CKbe7Fy","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"}}}}]}]}
@@ -5,13 +5,12 @@
5
5
  import { describe, expect, it } from '@effect/vitest';
6
6
  import * as Effect from 'effect/Effect';
7
7
 
8
- import { ContextBinding } from '@dxos/assistant';
8
+ import { AiContext } from '@dxos/assistant';
9
9
  import { Routine, Operation, OperationHandlerSet } from '@dxos/compute';
10
- import { Database, Feed, Obj, Ref } from '@dxos/echo';
10
+ import { Database, Feed, Filter, Obj, Ref } from '@dxos/echo';
11
11
  import { TestHelpers } from '@dxos/effect/testing';
12
- import { QueueService } from '@dxos/functions';
13
12
  import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
14
- import { ObjectId } from '@dxos/keys';
13
+ import { EntityId } from '@dxos/keys';
15
14
  import { Text } from '@dxos/schema';
16
15
  import { Message } from '@dxos/types';
17
16
 
@@ -19,19 +18,19 @@ import * as Chat from '../../types/Chat';
19
18
  import { AgentPrompt } from './definitions';
20
19
  import defaultAgentPrompt from './prompt';
21
20
 
22
- ObjectId.dangerouslyDisableRandomness();
21
+ EntityId.dangerouslyDisableRandomness();
23
22
 
24
23
  const operationHandlerSet = OperationHandlerSet.make(defaultAgentPrompt);
25
24
 
26
25
  const TestLayer = AssistantTestLayer({
27
26
  operationHandlers: operationHandlerSet,
28
- types: [Chat.Chat, Message.Message, ContextBinding, Text.Text],
27
+ types: [Chat.Chat, Message.Message, AiContext.Binding, Text.Text],
29
28
  aiServicePreset: 'edge-remote',
30
29
  });
31
30
 
32
- const countQueueMessages = (queue: { queryObjects: () => Promise<Obj.Unknown[]> }) =>
33
- Effect.promise(async () => {
34
- const items = await queue.queryObjects();
31
+ const countFeedMessages = (feed: Feed.Feed) =>
32
+ Effect.gen(function* () {
33
+ const items = yield* Feed.runQuery(feed, Filter.everything());
35
34
  return items.filter(Obj.instanceOf(Message.Message)).length;
36
35
  });
37
36
 
@@ -41,9 +40,7 @@ describe('Agent prompt', () => {
41
40
  Effect.fnUntraced(
42
41
  function* (_) {
43
42
  const feed = yield* Database.add(Feed.make());
44
- const queueDxn = Feed.getQueueDxn(feed)!;
45
- const queue = yield* QueueService.getQueue<Message.Message | ContextBinding>(queueDxn);
46
- const messageCountBefore = yield* countQueueMessages(queue);
43
+ const messageCountBefore = yield* countFeedMessages(feed);
47
44
 
48
45
  const chat = yield* Database.add(
49
46
  Chat.make({
@@ -68,7 +65,7 @@ describe('Agent prompt', () => {
68
65
  chat: Ref.make(chat),
69
66
  });
70
67
 
71
- const messageCountAfter = yield* countQueueMessages(queue);
68
+ const messageCountAfter = yield* countFeedMessages(feed);
72
69
 
73
70
  expect(messageCountAfter).toBeGreaterThan(messageCountBefore);
74
71
  expect(result).toBe('ack');
@@ -62,7 +62,7 @@ export default AgentPrompt.pipe(
62
62
  Effect.map(Array.map((option) => option.value)),
63
63
  );
64
64
 
65
- const promptInstructions = yield* Database.load(prompt.instructions.source);
65
+ const promptInstructions = yield* Database.load(prompt.instructions);
66
66
  let promptText = Template.process(promptInstructions.content, input);
67
67
 
68
68
  if (input !== undefined) {
@@ -100,7 +100,7 @@ export default AgentPrompt.pipe(
100
100
  });
101
101
 
102
102
  const runtime = yield* Effect.runtime<Feed.FeedService>();
103
- const session = yield* acquireReleaseResource(() => new AiSession({ feed, runtime }));
103
+ const session = yield* acquireReleaseResource(() => new AiSession.Session({ feed, runtime }));
104
104
 
105
105
  yield* Effect.promise(() =>
106
106
  session.context.bind({
@@ -213,7 +213,7 @@ const ToolExecutionService = ({ feed }: ToolExecutionServiceOptions) =>
213
213
  log('invoking operation', { operationDef, input });
214
214
  const result = yield* operationInvoker
215
215
  .invoke(operationDef, input, {
216
- conversation: Obj.getDXN(feed).toString(),
216
+ conversation: Obj.getURI(feed),
217
217
  })
218
218
  .pipe(Effect.orDie);
219
219
  log('result', { result });
package/src/sync/sync.ts CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { Filter, Obj, Query, Ref } from '@dxos/echo';
8
- import { Database } from '@dxos/echo';
7
+ import { Database, Filter, Obj, Query, Ref } from '@dxos/echo';
9
8
  import { failedInvariant } from '@dxos/invariant';
9
+ import { EID } from '@dxos/keys';
10
10
  import { log } from '@dxos/log';
11
11
 
12
12
  /**
@@ -39,22 +39,23 @@ export const syncObjects: (
39
39
  if (!ref.target) {
40
40
  continue;
41
41
  }
42
- if (Obj.getDXN(ref.target).isLocalObjectId()) {
42
+ const targetUri = EID.tryParse(Obj.getURI(ref.target));
43
+ if (targetUri && EID.isLocal(targetUri)) {
43
44
  // obj not persisted to db.
44
45
  const [target] = yield* syncObjects([ref.target], { foreignKeyId });
45
46
  (obj as any)[key] = Ref.make(target);
46
47
  }
47
48
  }
48
49
 
49
- const schema = Obj.getSchema(obj) ?? failedInvariant('No schema.');
50
+ const type = Obj.getType(obj) ?? failedInvariant('No type.');
50
51
  const foreignId = Obj.getKeys(obj, foreignKeyId)[0]?.id ?? failedInvariant('No foreign key.');
51
52
  const [existing] = yield* Database.runQuery(
52
- Query.select(Filter.foreignKeys(schema, [{ source: foreignKeyId, id: foreignId }])),
53
+ Query.select(Filter.foreignKeys(type, [{ source: foreignKeyId, id: foreignId }])),
53
54
  );
54
55
  log('sync object', {
55
56
  type: Obj.getTypename(obj),
56
57
  foreignId,
57
- existing: existing ? Obj.getDXN(existing) : undefined,
58
+ existing: existing ? Obj.getURI(existing) : undefined,
58
59
  });
59
60
  if (!existing) {
60
61
  yield* Database.add(obj);