@dxos/assistant-toolkit 0.9.1-staging.ee54ba693a → 0.11.0

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 (397) hide show
  1. package/dist/lib/chunk-Chat.mjs +144 -0
  2. package/dist/lib/chunk-Chat.mjs.map +1 -0
  3. package/dist/lib/chunk-Memory.mjs +19 -0
  4. package/dist/lib/chunk-Memory.mjs.map +1 -0
  5. package/dist/lib/{neutral/agent-rules-KWCBKJ5W.mjs → chunk-agent-rules.mjs} +8 -15
  6. package/dist/lib/chunk-agent-rules.mjs.map +1 -0
  7. package/dist/lib/chunk-agent.mjs +45 -0
  8. package/dist/lib/chunk-agent.mjs.map +1 -0
  9. package/dist/lib/chunk-artifact-add.mjs +31 -0
  10. package/dist/lib/chunk-artifact-add.mjs.map +1 -0
  11. package/dist/lib/chunk-artifact-list.mjs +23 -0
  12. package/dist/lib/chunk-artifact-list.mjs.map +1 -0
  13. package/dist/lib/chunk-context-add.mjs +16 -0
  14. package/dist/lib/chunk-context-add.mjs.map +1 -0
  15. package/dist/lib/chunk-context-remove.mjs +16 -0
  16. package/dist/lib/chunk-context-remove.mjs.map +1 -0
  17. package/dist/lib/chunk-create-agent.mjs +23 -0
  18. package/dist/lib/chunk-create-agent.mjs.map +1 -0
  19. package/dist/lib/chunk-definitions.mjs +52 -0
  20. package/dist/lib/chunk-definitions.mjs.map +1 -0
  21. package/dist/lib/chunk-definitions2.mjs +56 -0
  22. package/dist/lib/chunk-definitions2.mjs.map +1 -0
  23. package/dist/lib/chunk-definitions3.mjs +24 -0
  24. package/dist/lib/chunk-definitions3.mjs.map +1 -0
  25. package/dist/lib/chunk-delete.mjs +14 -0
  26. package/dist/lib/chunk-delete.mjs.map +1 -0
  27. package/dist/lib/chunk-enable-skills.mjs +39 -0
  28. package/dist/lib/chunk-enable-skills.mjs.map +1 -0
  29. package/dist/lib/chunk-fetch-messages.mjs +113 -0
  30. package/dist/lib/chunk-fetch-messages.mjs.map +1 -0
  31. package/dist/lib/chunk-fetch.mjs +20 -0
  32. package/dist/lib/chunk-fetch.mjs.map +1 -0
  33. package/dist/lib/chunk-get-context.mjs +55 -0
  34. package/dist/lib/chunk-get-context.mjs.map +1 -0
  35. package/dist/lib/chunk-get-current-date.mjs +17 -0
  36. package/dist/lib/chunk-get-current-date.mjs.map +1 -0
  37. package/dist/lib/chunk-load.mjs +13 -0
  38. package/dist/lib/chunk-load.mjs.map +1 -0
  39. package/dist/lib/chunk-object-create.mjs +42 -0
  40. package/dist/lib/chunk-object-create.mjs.map +1 -0
  41. package/dist/lib/chunk-object-delete.mjs +14 -0
  42. package/dist/lib/chunk-object-delete.mjs.map +1 -0
  43. package/dist/lib/chunk-object-update.mjs +19 -0
  44. package/dist/lib/chunk-object-update.mjs.map +1 -0
  45. package/dist/lib/chunk-operations.mjs +714 -0
  46. package/dist/lib/chunk-operations.mjs.map +1 -0
  47. package/dist/lib/chunk-plan-reminder.mjs +80 -0
  48. package/dist/lib/chunk-plan-reminder.mjs.map +1 -0
  49. package/dist/lib/chunk-query-skills.mjs +12 -0
  50. package/dist/lib/chunk-query-skills.mjs.map +1 -0
  51. package/dist/lib/chunk-query.mjs +36 -0
  52. package/dist/lib/chunk-query.mjs.map +1 -0
  53. package/dist/lib/chunk-query2.mjs +18 -0
  54. package/dist/lib/chunk-query2.mjs.map +1 -0
  55. package/dist/lib/chunk-relation-create.mjs +41 -0
  56. package/dist/lib/chunk-relation-create.mjs.map +1 -0
  57. package/dist/lib/chunk-relation-delete.mjs +14 -0
  58. package/dist/lib/chunk-relation-delete.mjs.map +1 -0
  59. package/dist/lib/chunk-relay.mjs +76 -0
  60. package/dist/lib/chunk-relay.mjs.map +1 -0
  61. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  62. package/dist/lib/chunk-run-instructions.mjs +145 -0
  63. package/dist/lib/chunk-run-instructions.mjs.map +1 -0
  64. package/dist/lib/chunk-save.mjs +17 -0
  65. package/dist/lib/chunk-save.mjs.map +1 -0
  66. package/dist/lib/chunk-schema-add.mjs +19 -0
  67. package/dist/lib/chunk-schema-add.mjs.map +1 -0
  68. package/dist/lib/chunk-schema-list.mjs +29 -0
  69. package/dist/lib/chunk-schema-list.mjs.map +1 -0
  70. package/dist/lib/chunk-set-alarm.mjs +55 -0
  71. package/dist/lib/chunk-set-alarm.mjs.map +1 -0
  72. package/dist/lib/chunk-sync-automation.mjs +130 -0
  73. package/dist/lib/chunk-sync-automation.mjs.map +1 -0
  74. package/dist/lib/chunk-sync-issues.mjs +127 -0
  75. package/dist/lib/chunk-sync-issues.mjs.map +1 -0
  76. package/dist/lib/chunk-sync.mjs +91 -0
  77. package/dist/lib/chunk-sync.mjs.map +1 -0
  78. package/dist/lib/chunk-tag-add.mjs +14 -0
  79. package/dist/lib/chunk-tag-add.mjs.map +1 -0
  80. package/dist/lib/chunk-tag-remove.mjs +14 -0
  81. package/dist/lib/chunk-tag-remove.mjs.map +1 -0
  82. package/dist/lib/chunk-types.mjs +198 -0
  83. package/dist/lib/chunk-types.mjs.map +1 -0
  84. package/dist/lib/chunk-update-tasks.mjs +34 -0
  85. package/dist/lib/chunk-update-tasks.mjs.map +1 -0
  86. package/dist/lib/index.mjs +614 -0
  87. package/dist/lib/index.mjs.map +1 -0
  88. package/dist/lib/testing.mjs +102 -0
  89. package/dist/lib/testing.mjs.map +1 -0
  90. package/dist/types/src/skills/agent/operations/definitions.d.ts +16 -46
  91. package/dist/types/src/skills/agent/operations/definitions.d.ts.map +1 -1
  92. package/dist/types/src/skills/agent/operations/get-context.test.d.ts +2 -0
  93. package/dist/types/src/skills/agent/operations/get-context.test.d.ts.map +1 -0
  94. package/dist/types/src/skills/agent/operations/index.d.ts.map +1 -1
  95. package/dist/types/src/skills/agent/operations/relay.d.ts +11 -0
  96. package/dist/types/src/skills/agent/operations/relay.d.ts.map +1 -0
  97. package/dist/types/src/skills/agent/operations/relay.test.d.ts +2 -0
  98. package/dist/types/src/skills/agent/operations/relay.test.d.ts.map +1 -0
  99. package/dist/types/src/skills/agent/skill.d.ts.map +1 -1
  100. package/dist/types/src/skills/agent-wizard/operations/definitions.d.ts +4 -1
  101. package/dist/types/src/skills/agent-wizard/operations/definitions.d.ts.map +1 -1
  102. package/dist/types/src/skills/agent-wizard/operations/sync-automation.d.ts +26 -0
  103. package/dist/types/src/skills/agent-wizard/operations/sync-automation.d.ts.map +1 -0
  104. package/dist/types/src/skills/agent-wizard/operations/sync-automation.test.d.ts +2 -0
  105. package/dist/types/src/skills/agent-wizard/operations/sync-automation.test.d.ts.map +1 -0
  106. package/dist/types/src/skills/agent-wizard/skill.d.ts.map +1 -1
  107. package/dist/types/src/skills/database/operations/context-add.test.d.ts +2 -0
  108. package/dist/types/src/skills/database/operations/context-add.test.d.ts.map +1 -0
  109. package/dist/types/src/skills/database/operations/context-remove.test.d.ts +2 -0
  110. package/dist/types/src/skills/database/operations/context-remove.test.d.ts.map +1 -0
  111. package/dist/types/src/skills/database/operations/definitions.d.ts +7 -2
  112. package/dist/types/src/skills/database/operations/definitions.d.ts.map +1 -1
  113. package/dist/types/src/skills/database/operations/load.test.d.ts +2 -0
  114. package/dist/types/src/skills/database/operations/load.test.d.ts.map +1 -0
  115. package/dist/types/src/skills/database/operations/object-create.d.ts +4 -1
  116. package/dist/types/src/skills/database/operations/object-create.d.ts.map +1 -1
  117. package/dist/types/src/skills/database/operations/object-create.test.d.ts +2 -0
  118. package/dist/types/src/skills/database/operations/object-create.test.d.ts.map +1 -0
  119. package/dist/types/src/skills/database/operations/object-delete.test.d.ts +2 -0
  120. package/dist/types/src/skills/database/operations/object-delete.test.d.ts.map +1 -0
  121. package/dist/types/src/skills/database/operations/object-update.test.d.ts +2 -0
  122. package/dist/types/src/skills/database/operations/object-update.test.d.ts.map +1 -0
  123. package/dist/types/src/skills/database/operations/query.test.d.ts +2 -0
  124. package/dist/types/src/skills/database/operations/query.test.d.ts.map +1 -0
  125. package/dist/types/src/skills/database/operations/relation-create.test.d.ts +2 -0
  126. package/dist/types/src/skills/database/operations/relation-create.test.d.ts.map +1 -0
  127. package/dist/types/src/skills/database/operations/schema-add.d.ts +3 -1
  128. package/dist/types/src/skills/database/operations/schema-add.test.d.ts +2 -0
  129. package/dist/types/src/skills/database/operations/schema-add.test.d.ts.map +1 -0
  130. package/dist/types/src/skills/database/operations/schema-list.test.d.ts +2 -0
  131. package/dist/types/src/skills/database/operations/schema-list.test.d.ts.map +1 -0
  132. package/dist/types/src/skills/database/operations/tag-add.test.d.ts +2 -0
  133. package/dist/types/src/skills/database/operations/tag-add.test.d.ts.map +1 -0
  134. package/dist/types/src/skills/database/operations/tag-remove.test.d.ts +2 -0
  135. package/dist/types/src/skills/database/operations/tag-remove.test.d.ts.map +1 -0
  136. package/dist/types/src/skills/delegation/operations/delegate-task.d.ts +6 -5
  137. package/dist/types/src/skills/delegation/operations/delegate-task.d.ts.map +1 -1
  138. package/dist/types/src/skills/index.d.ts +1 -0
  139. package/dist/types/src/skills/index.d.ts.map +1 -1
  140. package/dist/types/src/skills/linear/operations/sync-issues.d.ts.map +1 -1
  141. package/dist/types/src/skills/memory/operations/delete.test.d.ts +2 -0
  142. package/dist/types/src/skills/memory/operations/delete.test.d.ts.map +1 -0
  143. package/dist/types/src/skills/memory/operations/query.test.d.ts +2 -0
  144. package/dist/types/src/skills/memory/operations/query.test.d.ts.map +1 -0
  145. package/dist/types/src/skills/memory/operations/save.test.d.ts +2 -0
  146. package/dist/types/src/skills/memory/operations/save.test.d.ts.map +1 -0
  147. package/dist/types/src/skills/planning/operations/definitions.d.ts +1 -3
  148. package/dist/types/src/skills/planning/operations/definitions.d.ts.map +1 -1
  149. package/dist/types/src/skills/planning/operations/plan-reminder.d.ts +7 -6
  150. package/dist/types/src/skills/planning/operations/plan-reminder.d.ts.map +1 -1
  151. package/dist/types/src/skills/planning/operations/plan-reminder.test.d.ts +2 -0
  152. package/dist/types/src/skills/planning/operations/plan-reminder.test.d.ts.map +1 -0
  153. package/dist/types/src/skills/planning/operations/update-tasks.d.ts +3 -1
  154. package/dist/types/src/skills/planning/operations/update-tasks.d.ts.map +1 -1
  155. package/dist/types/src/skills/project/index.d.ts +3 -0
  156. package/dist/types/src/skills/project/index.d.ts.map +1 -0
  157. package/dist/types/src/skills/project/operations/artifact-add.d.ts +5 -0
  158. package/dist/types/src/skills/project/operations/artifact-add.d.ts.map +1 -0
  159. package/dist/types/src/skills/project/operations/artifact-list.d.ts +5 -0
  160. package/dist/types/src/skills/project/operations/artifact-list.d.ts.map +1 -0
  161. package/dist/types/src/skills/project/operations/definitions.d.ts +23 -0
  162. package/dist/types/src/skills/project/operations/definitions.d.ts.map +1 -0
  163. package/dist/types/src/skills/project/operations/index.d.ts +4 -0
  164. package/dist/types/src/skills/project/operations/index.d.ts.map +1 -0
  165. package/dist/types/src/skills/project/skill.d.ts +4 -0
  166. package/dist/types/src/skills/project/skill.d.ts.map +1 -0
  167. package/dist/types/src/skills/project/skill.test.d.ts.map +1 -0
  168. package/dist/types/src/skills/skill-manager/skill.d.ts.map +1 -1
  169. package/dist/types/src/supervisor/delegation-strategy.d.ts +5 -5
  170. package/dist/types/src/supervisor/delegation-strategy.d.ts.map +1 -1
  171. package/dist/types/src/supervisor/delegation-strategy.test.d.ts +2 -0
  172. package/dist/types/src/supervisor/delegation-strategy.test.d.ts.map +1 -0
  173. package/dist/types/src/sync/sync.test.d.ts +2 -0
  174. package/dist/types/src/sync/sync.test.d.ts.map +1 -0
  175. package/dist/types/src/testing/index.d.ts +1 -0
  176. package/dist/types/src/testing/index.d.ts.map +1 -1
  177. package/dist/types/src/testing/operations.d.ts +7 -0
  178. package/dist/types/src/testing/operations.d.ts.map +1 -0
  179. package/dist/types/src/types/Agent.d.ts +28 -31
  180. package/dist/types/src/types/Agent.d.ts.map +1 -1
  181. package/dist/types/src/types/Chat.d.ts +28 -14
  182. package/dist/types/src/types/Chat.d.ts.map +1 -1
  183. package/dist/types/src/types/Chat.test.d.ts +2 -0
  184. package/dist/types/src/types/Chat.test.d.ts.map +1 -0
  185. package/dist/types/src/types/index.d.ts +1 -2
  186. package/dist/types/src/types/index.d.ts.map +1 -1
  187. package/dist/types/tsconfig.tsbuildinfo +1 -1
  188. package/package.json +30 -29
  189. package/src/operations/run-instructions.test.ts +26 -34
  190. package/src/operations/skill-resolution.test.ts +6 -1
  191. package/src/skills/agent/operations/definitions.ts +18 -62
  192. package/src/skills/agent/operations/get-context.test.ts +81 -0
  193. package/src/skills/agent/operations/get-context.ts +9 -36
  194. package/src/skills/agent/operations/index.ts +1 -3
  195. package/src/skills/agent/operations/relay.test.ts +63 -0
  196. package/src/skills/agent/operations/relay.ts +124 -0
  197. package/src/skills/agent/skill.ts +3 -15
  198. package/src/skills/agent-wizard/operations/create-agent.ts +3 -3
  199. package/src/skills/agent-wizard/operations/definitions.ts +19 -4
  200. package/src/skills/agent-wizard/operations/index.ts +1 -1
  201. package/src/skills/agent-wizard/operations/sync-automation.test.ts +103 -0
  202. package/src/skills/agent-wizard/operations/sync-automation.ts +205 -0
  203. package/src/skills/agent-wizard/skill.ts +9 -10
  204. package/src/skills/alarm/skill.test.ts +2 -2
  205. package/src/skills/browser/skill.test.ts +4 -4
  206. package/src/skills/database/operations/context-add.test.ts +46 -0
  207. package/src/skills/database/operations/context-remove.test.ts +46 -0
  208. package/src/skills/database/operations/definitions.ts +23 -7
  209. package/src/skills/database/operations/load.test.ts +38 -0
  210. package/src/skills/database/operations/object-create.test.ts +116 -0
  211. package/src/skills/database/operations/object-create.ts +13 -2
  212. package/src/skills/database/operations/object-delete.test.ts +37 -0
  213. package/src/skills/database/operations/object-update.test.ts +39 -0
  214. package/src/skills/database/operations/query.test.ts +128 -0
  215. package/src/skills/database/operations/relation-create.test.ts +46 -0
  216. package/src/skills/database/operations/schema-add.test.ts +79 -0
  217. package/src/skills/database/operations/schema-list.test.ts +42 -0
  218. package/src/skills/database/operations/tag-add.test.ts +41 -0
  219. package/src/skills/database/operations/tag-remove.test.ts +43 -0
  220. package/src/skills/delegation/operations/delegate-task.test.ts +51 -36
  221. package/src/skills/delegation/operations/delegate-task.ts +31 -48
  222. package/src/skills/discord/operations/fetch-messages.test.ts +2 -2
  223. package/src/skills/github/operations/fetch-prs.ts +1 -1
  224. package/src/skills/index.ts +1 -0
  225. package/src/skills/linear/operations/linear.test.ts +1 -1
  226. package/src/skills/linear/operations/sync-issues.ts +6 -23
  227. package/src/skills/memory/operations/delete.test.ts +37 -0
  228. package/src/skills/memory/operations/query.test.ts +76 -0
  229. package/src/skills/memory/operations/save.test.ts +43 -0
  230. package/src/skills/planning/operations/definitions.ts +9 -6
  231. package/src/skills/planning/operations/plan-reminder.test.ts +123 -0
  232. package/src/skills/planning/operations/plan-reminder.ts +49 -31
  233. package/src/skills/planning/operations/update-tasks.md +23 -22
  234. package/src/skills/planning/operations/update-tasks.test.ts +31 -17
  235. package/src/skills/planning/operations/update-tasks.ts +17 -25
  236. package/src/skills/project/index.ts +6 -0
  237. package/src/skills/project/operations/artifact-add.ts +47 -0
  238. package/src/skills/project/operations/artifact-list.ts +41 -0
  239. package/src/skills/project/operations/definitions.ts +63 -0
  240. package/src/skills/project/operations/index.ts +12 -0
  241. package/src/skills/project/skill.test.ts +78 -0
  242. package/src/skills/project/skill.ts +42 -0
  243. package/src/skills/skill-manager/operations/definitions.ts +1 -1
  244. package/src/skills/skill-manager/skill.test.ts +1 -1
  245. package/src/skills/skill-manager/skill.ts +7 -5
  246. package/src/skills/websearch/skill.test.ts +2 -2
  247. package/src/supervisor/delegation-strategy.test.ts +129 -0
  248. package/src/supervisor/delegation-strategy.ts +92 -56
  249. package/src/sync/sync.test.ts +95 -0
  250. package/src/sync/sync.ts +5 -3
  251. package/src/testing/index.ts +1 -0
  252. package/src/testing/operations.ts +65 -0
  253. package/src/types/Agent.test.ts +36 -66
  254. package/src/types/Agent.ts +108 -137
  255. package/src/types/Chat.test.ts +234 -0
  256. package/src/types/Chat.ts +80 -26
  257. package/src/types/index.ts +1 -2
  258. package/dist/lib/neutral/add-artifact-5JNUYLCA.mjs +0 -24
  259. package/dist/lib/neutral/add-artifact-5JNUYLCA.mjs.map +0 -7
  260. package/dist/lib/neutral/agent-BFAYIBJI.mjs +0 -65
  261. package/dist/lib/neutral/agent-BFAYIBJI.mjs.map +0 -7
  262. package/dist/lib/neutral/agent-rules-KWCBKJ5W.mjs.map +0 -7
  263. package/dist/lib/neutral/chunk-3KA66YBF.mjs +0 -62
  264. package/dist/lib/neutral/chunk-3KA66YBF.mjs.map +0 -7
  265. package/dist/lib/neutral/chunk-6SGNFL6I.mjs +0 -85
  266. package/dist/lib/neutral/chunk-6SGNFL6I.mjs.map +0 -7
  267. package/dist/lib/neutral/chunk-BDTGFPM7.mjs +0 -113
  268. package/dist/lib/neutral/chunk-BDTGFPM7.mjs.map +0 -7
  269. package/dist/lib/neutral/chunk-EPQCDGIV.mjs +0 -27
  270. package/dist/lib/neutral/chunk-EPQCDGIV.mjs.map +0 -7
  271. package/dist/lib/neutral/chunk-H4W22FFJ.mjs +0 -232
  272. package/dist/lib/neutral/chunk-H4W22FFJ.mjs.map +0 -7
  273. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  274. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  275. package/dist/lib/neutral/chunk-JBTXZQ5G.mjs +0 -60
  276. package/dist/lib/neutral/chunk-JBTXZQ5G.mjs.map +0 -7
  277. package/dist/lib/neutral/chunk-JKOOA5OS.mjs +0 -97
  278. package/dist/lib/neutral/chunk-JKOOA5OS.mjs.map +0 -7
  279. package/dist/lib/neutral/chunk-JTEBE7KA.mjs +0 -66
  280. package/dist/lib/neutral/chunk-JTEBE7KA.mjs.map +0 -7
  281. package/dist/lib/neutral/chunk-KLFXJ2Z3.mjs +0 -36
  282. package/dist/lib/neutral/chunk-KLFXJ2Z3.mjs.map +0 -7
  283. package/dist/lib/neutral/chunk-LBA5UOLF.mjs +0 -87
  284. package/dist/lib/neutral/chunk-LBA5UOLF.mjs.map +0 -7
  285. package/dist/lib/neutral/chunk-LL3MOQUZ.mjs +0 -120
  286. package/dist/lib/neutral/chunk-LL3MOQUZ.mjs.map +0 -7
  287. package/dist/lib/neutral/chunk-MFVIGJBW.mjs +0 -68
  288. package/dist/lib/neutral/chunk-MFVIGJBW.mjs.map +0 -7
  289. package/dist/lib/neutral/chunk-PBARVBNJ.mjs +0 -86
  290. package/dist/lib/neutral/chunk-PBARVBNJ.mjs.map +0 -7
  291. package/dist/lib/neutral/chunk-VJ5QBYM5.mjs +0 -61
  292. package/dist/lib/neutral/chunk-VJ5QBYM5.mjs.map +0 -7
  293. package/dist/lib/neutral/chunk-YQSQRSXG.mjs +0 -367
  294. package/dist/lib/neutral/chunk-YQSQRSXG.mjs.map +0 -7
  295. package/dist/lib/neutral/chunk-Z2HFOZXK.mjs +0 -191
  296. package/dist/lib/neutral/chunk-Z2HFOZXK.mjs.map +0 -7
  297. package/dist/lib/neutral/context-add-DZTPB3FK.mjs +0 -22
  298. package/dist/lib/neutral/context-add-DZTPB3FK.mjs.map +0 -7
  299. package/dist/lib/neutral/context-remove-XSBOM4VJ.mjs +0 -22
  300. package/dist/lib/neutral/context-remove-XSBOM4VJ.mjs.map +0 -7
  301. package/dist/lib/neutral/create-agent-5WTOFIEK.mjs +0 -35
  302. package/dist/lib/neutral/create-agent-5WTOFIEK.mjs.map +0 -7
  303. package/dist/lib/neutral/definitions-VRR5OGXI.mjs +0 -17
  304. package/dist/lib/neutral/definitions-VRR5OGXI.mjs.map +0 -7
  305. package/dist/lib/neutral/delegate-task-UX64NK4M.mjs +0 -13
  306. package/dist/lib/neutral/delegate-task-UX64NK4M.mjs.map +0 -7
  307. package/dist/lib/neutral/delete-IU7HPU3K.mjs +0 -19
  308. package/dist/lib/neutral/delete-IU7HPU3K.mjs.map +0 -7
  309. package/dist/lib/neutral/enable-skills-FHEJXQVB.mjs +0 -47
  310. package/dist/lib/neutral/enable-skills-FHEJXQVB.mjs.map +0 -7
  311. package/dist/lib/neutral/fetch-5LY25EBR.mjs +0 -24
  312. package/dist/lib/neutral/fetch-5LY25EBR.mjs.map +0 -7
  313. package/dist/lib/neutral/fetch-messages-CQMDI36G.mjs +0 -139
  314. package/dist/lib/neutral/fetch-messages-CQMDI36G.mjs.map +0 -7
  315. package/dist/lib/neutral/get-context-Q4YY6DRV.mjs +0 -77
  316. package/dist/lib/neutral/get-context-Q4YY6DRV.mjs.map +0 -7
  317. package/dist/lib/neutral/get-current-date-JR5F7ZS3.mjs +0 -17
  318. package/dist/lib/neutral/get-current-date-JR5F7ZS3.mjs.map +0 -7
  319. package/dist/lib/neutral/index.mjs +0 -875
  320. package/dist/lib/neutral/index.mjs.map +0 -7
  321. package/dist/lib/neutral/load-S6HC5TGX.mjs +0 -17
  322. package/dist/lib/neutral/load-S6HC5TGX.mjs.map +0 -7
  323. package/dist/lib/neutral/meta.json +0 -1
  324. package/dist/lib/neutral/object-create-PVDQ62CG.mjs +0 -32
  325. package/dist/lib/neutral/object-create-PVDQ62CG.mjs.map +0 -7
  326. package/dist/lib/neutral/object-delete-3CSL6XI6.mjs +0 -18
  327. package/dist/lib/neutral/object-delete-3CSL6XI6.mjs.map +0 -7
  328. package/dist/lib/neutral/object-update-NIGMZINM.mjs +0 -28
  329. package/dist/lib/neutral/object-update-NIGMZINM.mjs.map +0 -7
  330. package/dist/lib/neutral/plan-reminder-N4X6JPBI.mjs +0 -88
  331. package/dist/lib/neutral/plan-reminder-N4X6JPBI.mjs.map +0 -7
  332. package/dist/lib/neutral/qualifier-5CIRZYX5.mjs +0 -91
  333. package/dist/lib/neutral/qualifier-5CIRZYX5.mjs.map +0 -7
  334. package/dist/lib/neutral/query-K4R7UHLU.mjs +0 -32
  335. package/dist/lib/neutral/query-K4R7UHLU.mjs.map +0 -7
  336. package/dist/lib/neutral/query-NCTCRYTD.mjs +0 -59
  337. package/dist/lib/neutral/query-NCTCRYTD.mjs.map +0 -7
  338. package/dist/lib/neutral/query-skills-7GQFSU4V.mjs +0 -17
  339. package/dist/lib/neutral/query-skills-7GQFSU4V.mjs.map +0 -7
  340. package/dist/lib/neutral/relation-create-QKXHTL7G.mjs +0 -34
  341. package/dist/lib/neutral/relation-create-QKXHTL7G.mjs.map +0 -7
  342. package/dist/lib/neutral/relation-delete-PDIWT2JX.mjs +0 -18
  343. package/dist/lib/neutral/relation-delete-PDIWT2JX.mjs.map +0 -7
  344. package/dist/lib/neutral/run-instructions-72ASH5EZ.mjs +0 -165
  345. package/dist/lib/neutral/run-instructions-72ASH5EZ.mjs.map +0 -7
  346. package/dist/lib/neutral/save-UYVRA4RS.mjs +0 -23
  347. package/dist/lib/neutral/save-UYVRA4RS.mjs.map +0 -7
  348. package/dist/lib/neutral/schema-add-5NOK2RWE.mjs +0 -25
  349. package/dist/lib/neutral/schema-add-5NOK2RWE.mjs.map +0 -7
  350. package/dist/lib/neutral/schema-list-BZUR5KMX.mjs +0 -37
  351. package/dist/lib/neutral/schema-list-BZUR5KMX.mjs.map +0 -7
  352. package/dist/lib/neutral/set-alarm-BD3NEYSU.mjs +0 -65
  353. package/dist/lib/neutral/set-alarm-BD3NEYSU.mjs.map +0 -7
  354. package/dist/lib/neutral/sync-issues-O76MCMD3.mjs +0 -166
  355. package/dist/lib/neutral/sync-issues-O76MCMD3.mjs.map +0 -7
  356. package/dist/lib/neutral/sync-triggers-YBTLPCUB.mjs +0 -138
  357. package/dist/lib/neutral/sync-triggers-YBTLPCUB.mjs.map +0 -7
  358. package/dist/lib/neutral/tag-add-L5WNOBYY.mjs +0 -18
  359. package/dist/lib/neutral/tag-add-L5WNOBYY.mjs.map +0 -7
  360. package/dist/lib/neutral/tag-remove-WV5RPE5W.mjs +0 -18
  361. package/dist/lib/neutral/tag-remove-WV5RPE5W.mjs.map +0 -7
  362. package/dist/lib/neutral/testing/index.mjs +0 -65
  363. package/dist/lib/neutral/testing/index.mjs.map +0 -7
  364. package/dist/lib/neutral/update-tasks-HX4ILWOU.mjs +0 -46
  365. package/dist/lib/neutral/update-tasks-HX4ILWOU.mjs.map +0 -7
  366. package/dist/types/src/skills/agent/operations/add-artifact.d.ts +0 -4
  367. package/dist/types/src/skills/agent/operations/add-artifact.d.ts.map +0 -1
  368. package/dist/types/src/skills/agent/operations/agent.d.ts +0 -4
  369. package/dist/types/src/skills/agent/operations/agent.d.ts.map +0 -1
  370. package/dist/types/src/skills/agent/operations/qualifier.d.ts +0 -5
  371. package/dist/types/src/skills/agent/operations/qualifier.d.ts.map +0 -1
  372. package/dist/types/src/skills/agent/skill.test.d.ts.map +0 -1
  373. package/dist/types/src/skills/agent-wizard/operations/sync-triggers.d.ts +0 -8
  374. package/dist/types/src/skills/agent-wizard/operations/sync-triggers.d.ts.map +0 -1
  375. package/dist/types/src/skills/database/skill.test.d.ts +0 -2
  376. package/dist/types/src/skills/database/skill.test.d.ts.map +0 -1
  377. package/dist/types/src/skills/memory/skill.test.d.ts +0 -2
  378. package/dist/types/src/skills/memory/skill.test.d.ts.map +0 -1
  379. package/dist/types/src/skills/planning/skill.test.d.ts +0 -2
  380. package/dist/types/src/skills/planning/skill.test.d.ts.map +0 -1
  381. package/dist/types/src/types/Plan.d.ts +0 -80
  382. package/dist/types/src/types/Plan.d.ts.map +0 -1
  383. package/src/operations/run-instructions.conversations.json +0 -1
  384. package/src/skills/agent/operations/add-artifact.ts +0 -20
  385. package/src/skills/agent/operations/agent.ts +0 -69
  386. package/src/skills/agent/operations/qualifier.ts +0 -97
  387. package/src/skills/agent/skill.conversations.json +0 -1
  388. package/src/skills/agent/skill.test.ts +0 -728
  389. package/src/skills/agent-wizard/operations/sync-triggers.ts +0 -169
  390. package/src/skills/database/skill.conversations.json +0 -1
  391. package/src/skills/database/skill.test.ts +0 -531
  392. package/src/skills/memory/skill.conversations.json +0 -1
  393. package/src/skills/memory/skill.test.ts +0 -138
  394. package/src/skills/planning/skill.conversations.json +0 -1
  395. package/src/skills/planning/skill.test.ts +0 -123
  396. package/src/types/Plan.ts +0 -123
  397. /package/dist/types/src/skills/{agent → project}/skill.test.d.ts +0 -0
@@ -1,728 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { describe, expect, it } from '@effect/vitest';
6
- import * as Effect from 'effect/Effect';
7
- import * as Exit from 'effect/Exit';
8
-
9
- import { MemoizedAiService, MemoizedLanguageModel } from '@dxos/ai/testing';
10
- import { AiSession } from '@dxos/assistant';
11
- import { SpaceProperties } from '@dxos/client-protocol';
12
- import { Operation, OperationHandlerSet, Skill, Trigger } from '@dxos/compute';
13
- import { Collection, Database, Feed, Filter, Obj, Query, Ref } from '@dxos/echo';
14
- import { EffectEx } from '@dxos/effect';
15
- import { TestHelpers } from '@dxos/effect/testing';
16
- import { TriggerDispatcher } from '@dxos/functions-runtime';
17
- import { AssistantTestLayerWithTriggers } from '@dxos/functions-runtime/testing';
18
- import { invariant } from '@dxos/invariant';
19
- import { EntityId } from '@dxos/keys';
20
- import { MarkdownSkill } from '@dxos/plugin-markdown';
21
- import { Markdown } from '@dxos/plugin-markdown';
22
- import { MarkdownOperationHandlerSet } from '@dxos/plugin-markdown/plugin';
23
- import { WithProperties } from '@dxos/plugin-markdown/testing';
24
- import { Text } from '@dxos/schema';
25
- import { Message } from '@dxos/types';
26
- import { trim } from '@dxos/util';
27
-
28
- import { Agent, Chat, Plan } from '../../types';
29
- import { AgentWizardHandlers, AgentWizardOperations } from '../agent-wizard';
30
- import { PlanningHandlers, PlanningSkill } from '../planning';
31
- import { AgentSkillHandlers } from './operations';
32
- import { AgentWorker } from './operations/definitions';
33
- import AgentSkillDef from './skill';
34
-
35
- EntityId.dangerouslyDisableRandomness();
36
-
37
- const TestLayer = AssistantTestLayerWithTriggers({
38
- aiServicePreset: 'edge-remote',
39
- operationHandlers: OperationHandlerSet.merge(
40
- AgentSkillHandlers,
41
- AgentWizardHandlers,
42
- MarkdownOperationHandlerSet,
43
- PlanningHandlers,
44
- ),
45
- types: [
46
- Agent.Agent,
47
- Plan.Plan,
48
- Chat.CompanionTo,
49
- Chat.Chat,
50
- SpaceProperties,
51
- Skill.Skill,
52
- Trigger.Trigger,
53
- Text.Text,
54
- Markdown.Document,
55
- Collection.Collection,
56
- ],
57
- tracing: 'pretty',
58
- // EntityIds are deterministic (via dangerouslyDisableRandomness) but their values shift when
59
- // internal ECHO object creation changes. Canonicalize them so recordings match structurally
60
- // regardless of which specific IDs the current code generates.
61
- dynamicValuePatterns: [MemoizedLanguageModel.SPACE_ID_PATTERN, MemoizedLanguageModel.ENTITY_ID_PATTERN],
62
- });
63
-
64
- const SYSTEM = trim`
65
- You are a helpful assistant that can help with tasks in the outside world.
66
- Be transparent about what you are doing and what you are not doing.
67
- If you do not have tools to complete the task, inform the user.
68
- DO NOT PRETEND TO DO SOMETHING YOU CAN'T DO.
69
- `;
70
-
71
- describe('Agent', () => {
72
- const skill = AgentSkillDef.make();
73
-
74
- it.scoped(
75
- 'agent adds artifact to agent',
76
- Effect.fnUntraced(
77
- function* (_) {
78
- const agent = yield* Agent.makeInitialized(
79
- {
80
- name: 'Test Agent',
81
- instructions: 'A test agent for adding artifacts.',
82
- skills: [Ref.make(MarkdownSkill.make())],
83
- },
84
- skill,
85
- );
86
- yield* Database.flush();
87
-
88
- const document = yield* Database.add(
89
- Obj.make(Markdown.Document, {
90
- name: 'Test Document',
91
- content: Ref.make(Text.make({ content: 'This is a test document with some content.' })),
92
- }),
93
- );
94
- yield* Database.flush();
95
-
96
- expect(agent.artifacts).toHaveLength(0);
97
-
98
- const chatFeed = agent.chat?.target?.feed?.target;
99
- invariant(chatFeed, 'Agent chat feed not found.');
100
- const runtime = yield* Effect.runtime<Database.Service>();
101
- const session = yield* EffectEx.acquireReleaseResource(
102
- () => new AiSession.Session({ feed: chatFeed, runtime }),
103
- );
104
- yield* Effect.promise(() => session.context.open());
105
-
106
- const documentUri = Obj.getURI(document);
107
- yield* session
108
- .createRequest({
109
- system: SYSTEM,
110
- prompt: `Please add the document ${documentUri} as an artifact named "My Test Document" to this agent.`,
111
- })
112
- .pipe(Effect.provide(session.makeToolExecutionServices()));
113
-
114
- expect(agent.artifacts).toHaveLength(1);
115
- expect(agent.artifacts[0].name).toBe('My Test Document');
116
- const artifactData = yield* agent.artifacts[0].data.pipe(Database.load);
117
- expect(Obj.instanceOf(Markdown.Document, artifactData)).toBe(true);
118
- },
119
- Effect.provide(TestLayer),
120
- TestHelpers.provideTestContext,
121
- ),
122
- MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
123
- );
124
-
125
- it.scoped(
126
- 'shopping list',
127
- Effect.fnUntraced(
128
- function* (_) {
129
- const agent = yield* Agent.makeInitialized(
130
- {
131
- name: 'Shopping list',
132
- instructions: 'Keep a shopping list of items to buy.',
133
- skills: [Ref.make(MarkdownSkill.make())],
134
- },
135
- skill,
136
- );
137
- const chatFeed = agent.chat?.target?.feed?.target;
138
- invariant(chatFeed, 'Agent chat feed not found.');
139
- yield* Database.flush();
140
- const runtime = yield* Effect.runtime<Database.Service>();
141
- const session = yield* EffectEx.acquireReleaseResource(
142
- () => new AiSession.Session({ feed: chatFeed, runtime }),
143
- );
144
- yield* Effect.promise(() => session.context.open());
145
-
146
- yield* session
147
- .createRequest({
148
- system: SYSTEM,
149
- prompt: `List ingredients for a scrambled eggs on a toast breakfast.`,
150
- })
151
- .pipe(Effect.provide(session.makeToolExecutionServices()));
152
-
153
- console.log(yield* Effect.promise(() => dumpAgent(agent)));
154
- },
155
- Effect.provide(TestLayer),
156
- TestHelpers.provideTestContext,
157
- ),
158
- MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
159
- );
160
-
161
- it.scoped(
162
- 'expense tracking list',
163
- Effect.fnUntraced(
164
- function* (_) {
165
- const agent = yield* Agent.makeInitialized(
166
- {
167
- name: 'Expense tracking',
168
- instructions: trim`
169
- Keep a list of expenses in a markdown document (create artifact "Expenses").
170
- Process incoming emails, add the relevant ones to the list.
171
-
172
- Format:
173
-
174
- ## Expenses
175
- - Flight to London (2026-02-01): £100
176
- - Hotel in London (2026-02-01): £100
177
- `,
178
- skills: [Ref.make(MarkdownSkill.make())],
179
- },
180
- skill,
181
- );
182
- yield* Database.flush();
183
-
184
- const inboxFeed = yield* Database.add(Feed.make());
185
- yield* Database.add(
186
- Trigger.make({
187
- enabled: true,
188
- spec: Trigger.specFeed(inboxFeed),
189
- runnable: Ref.make(Operation.serialize(AgentWorker)),
190
- input: {
191
- agent: Ref.make(agent),
192
- event: '{{event}}',
193
- },
194
- }),
195
- );
196
-
197
- yield* Feed.append(
198
- inboxFeed,
199
- TEST_MESSAGES.map((message) => Obj.clone(message)),
200
- );
201
-
202
- const dispatcher = yield* TriggerDispatcher;
203
- const invocations = yield* dispatcher.invokeScheduledTriggers({ kinds: ['feed'], untilExhausted: true });
204
- expect(invocations.every((invocation) => Exit.isSuccess(invocation.result))).toBe(true);
205
-
206
- console.log(yield* Effect.promise(() => dumpAgent(agent)));
207
- },
208
- WithProperties,
209
- Effect.provide(TestLayer),
210
- TestHelpers.provideTestContext,
211
- ),
212
- MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
213
- );
214
-
215
- it.scoped(
216
- 'cron field creates a timer trigger that invokes the agent worker',
217
- Effect.fnUntraced(
218
- function* ({ expect }) {
219
- const cron = '*/5 * * * *';
220
- const agent = yield* Agent.makeInitialized(
221
- {
222
- name: 'Scheduled agent',
223
- instructions: 'A scheduled agent that runs on a timer.',
224
- skills: [Ref.make(MarkdownSkill.make())],
225
- cron,
226
- },
227
- skill,
228
- );
229
- yield* Database.flush();
230
-
231
- yield* Operation.invoke(AgentWizardOperations.SyncTriggers, { agent: Ref.make(agent) });
232
-
233
- const triggers = yield* Database.query(
234
- Query.select(Filter.type(Trigger.Trigger)).debugLabel('assistant-toolkit.skill.test.timer'),
235
- ).run;
236
- const timerTriggers = triggers.filter(
237
- (trigger) => trigger.spec?.kind === 'timer' && trigger.spec.cron === cron,
238
- );
239
- expect(timerTriggers).toHaveLength(1);
240
-
241
- const timerTrigger = timerTriggers[0];
242
- invariant(timerTrigger.spec?.kind === 'timer');
243
- expect(timerTrigger.spec.cron).toBe(cron);
244
- expect(timerTrigger.enabled).toBe(true);
245
-
246
- // Timer trigger bypasses the qualifier and points to the agent worker.
247
- invariant(timerTrigger.runnable);
248
- const operation = yield* Database.load(timerTrigger.runnable);
249
- invariant(Obj.instanceOf(Operation.PersistentOperation, operation));
250
- expect(Obj.getMeta(operation).key).toBe(AgentWorker.meta.key);
251
- },
252
- Effect.provide(TestLayer),
253
- TestHelpers.provideTestContext,
254
- ),
255
- );
256
-
257
- it.scoped(
258
- 'planning',
259
- Effect.fnUntraced(
260
- function* (_) {
261
- const agent = yield* Agent.makeInitialized(
262
- {
263
- name: 'Egg making',
264
- instructions: trim`
265
- I'm testing how planning (task management) works.
266
- Create tasks to make scrambled eggs.
267
-
268
- Then simulate this plan execution in a markdown document.
269
- The document should reflect the state of all objects involved in the cooking process.
270
- The document should also have the log of actions taken.
271
-
272
- Important: simualte actions one by one, in the order they are listed.
273
- Simlate by updating the local document.
274
-
275
- <example>
276
- # State
277
-
278
- - 2 raw eggs
279
- - 1 frying pan
280
-
281
- # Action log
282
-
283
- - Taken 2 raw eggs out of the fridge.
284
- </example>
285
- `,
286
- skills: [Ref.make(MarkdownSkill.make()), Ref.make(Obj.clone(PlanningSkill.make()))],
287
- },
288
- skill,
289
- );
290
- yield* Database.flush();
291
-
292
- const chatFeed = agent.chat?.target?.feed?.target;
293
- invariant(chatFeed, 'Agent chat feed not found.');
294
- yield* Database.flush();
295
- const runtime = yield* Effect.runtime<Database.Service>();
296
- const session = yield* EffectEx.acquireReleaseResource(
297
- () => new AiSession.Session({ feed: chatFeed, runtime }),
298
- );
299
- yield* Effect.promise(() => session.context.open());
300
-
301
- yield* session
302
- .createRequest({
303
- system: SYSTEM,
304
- prompt: `Go`,
305
- })
306
- .pipe(Effect.provide(session.makeToolExecutionServices()));
307
-
308
- console.log(yield* Effect.promise(() => dumpAgent(agent)));
309
- },
310
- WithProperties,
311
- Effect.provide(TestLayer),
312
- TestHelpers.provideTestContext,
313
- ),
314
- MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
315
- );
316
-
317
- it.scoped(
318
- 'sync-triggers sets trigger enabled from agent.enabled',
319
- Effect.fnUntraced(
320
- function* ({ expect }) {
321
- const agent = yield* Agent.makeInitialized(
322
- {
323
- name: 'Toggle agent',
324
- instructions: 'Test enabled propagation.',
325
- skills: [Ref.make(MarkdownSkill.make())],
326
- enabled: false,
327
- cron: '0 9 * * *',
328
- },
329
- skill,
330
- );
331
- yield* Database.flush();
332
-
333
- yield* Operation.invoke(AgentWizardOperations.SyncTriggers, { agent: Ref.make(agent) });
334
-
335
- const triggers = yield* Database.query(
336
- Query.select(Filter.type(Trigger.Trigger)).debugLabel('assistant-toolkit.skill.test.toggle-enabled'),
337
- ).run;
338
- expect(triggers.every((trigger) => trigger.enabled === false)).toBe(true);
339
-
340
- Obj.update(agent, (agent) => {
341
- agent.enabled = true;
342
- });
343
- yield* Database.flush();
344
- yield* Operation.invoke(AgentWizardOperations.SyncTriggers, { agent: Ref.make(agent) });
345
-
346
- const triggersAfter = yield* Database.query(
347
- Query.select(Filter.type(Trigger.Trigger)).debugLabel('assistant-toolkit.skill.test.after'),
348
- ).run;
349
- expect(triggersAfter).toHaveLength(triggers.length);
350
- expect(triggersAfter.every((trigger) => trigger.enabled === true)).toBe(true);
351
- },
352
- Effect.provide(TestLayer),
353
- TestHelpers.provideTestContext,
354
- ),
355
- );
356
- });
357
-
358
- const dumpAgent = async (agent: Agent.Agent) => {
359
- let text = '';
360
- text += `============== Agent: ${agent.name} ==============\n\n`;
361
- text += `============== Instructions ==============\n\n`;
362
- text += `${await agent.instructions.load().then((_) => _.content)}\n`;
363
- text += `============== Plan ==============\n\n`;
364
- if (agent.chat) {
365
- const chat = await agent.chat.load();
366
- text += chat.plan ? `${await chat.plan.load().then((plan) => Plan.formatPlan(plan))}\n` : 'No plan found.\n';
367
- } else {
368
- text += 'No plan found.\n';
369
- }
370
- text += `============== Artifacts ==============\n\n`;
371
- for (const artifact of agent.artifacts) {
372
- const data = await artifact.data.load();
373
- text += `============== ${artifact.name} (${Obj.getTypename(data)}) ==============\n`;
374
- if (Obj.instanceOf(Markdown.Document, data)) {
375
- text += `# ${Obj.getLabel(data)}\n\n${await data.content.load().then((_) => _.content)}\n`;
376
- } else {
377
- text += ` ${JSON.stringify(data, null, 2)}\n`;
378
- }
379
- text += '\n';
380
- }
381
- return text;
382
- };
383
-
384
- const TEST_MESSAGES = [
385
- // Expense-related emails
386
- Obj.make(Message.Message, {
387
- created: new Date('2026-01-28T10:15:00Z').toISOString(),
388
- sender: { email: 'receipts@britishairways.com' },
389
- blocks: [
390
- {
391
- _tag: 'text',
392
- text: trim`
393
- From: receipts@britishairways.com
394
- Subject: Your British Airways booking confirmation - BA287
395
-
396
- Dear Mr. Smith,
397
-
398
- Thank you for booking with British Airways. Your flight reservation is confirmed.
399
-
400
- BOOKING REFERENCE: XK7M2P
401
-
402
- FLIGHT DETAILS
403
- ─────────────────────────────────────
404
- Flight: BA287
405
- Date: 15 February 2026
406
- Route: San Francisco (SFO) → London Heathrow (LHR)
407
- Departure: 17:45 PST
408
- Arrival: 12:15 GMT (+1 day)
409
- Class: Economy
410
-
411
- PASSENGER
412
- ─────────────────────────────────────
413
- John Smith
414
-
415
- PAYMENT SUMMARY
416
- ─────────────────────────────────────
417
- Base fare: £485.00
418
- Taxes and fees: £127.50
419
- ─────────────────────────────────────
420
- TOTAL PAID: £612.50
421
-
422
- Payment method: Visa ending in 4521
423
- Transaction date: 28 January 2026
424
-
425
- Please keep this email for your records.
426
-
427
- Kind regards,
428
- British Airways
429
- `,
430
- },
431
- ],
432
- }),
433
- Obj.make(Message.Message, {
434
- created: new Date('2026-01-29T14:30:00Z').toISOString(),
435
- sender: { email: 'noreply@booking.com' },
436
- blocks: [
437
- {
438
- _tag: 'text',
439
- text: trim`
440
- From: noreply@booking.com
441
- Subject: Booking Confirmation - The Savoy London
442
-
443
- Booking Confirmation
444
-
445
- Dear John Smith,
446
-
447
- Your booking is confirmed!
448
-
449
- Hotel: The Savoy London
450
- Address: Strand, London WC2R 0EU, United Kingdom
451
- Check-in: 15 February 2026, 15:00
452
- Check-out: 18 February 2026, 11:00
453
- Guests: 1 adult
454
- Room: Deluxe King Room
455
-
456
- Total amount: £450.00
457
- Payment: Paid via credit card ending in 4521
458
- Booking reference: BK-789456123
459
-
460
- We look forward to welcoming you!
461
-
462
- Best regards,
463
- Booking.com
464
- `,
465
- },
466
- ],
467
- }),
468
- Obj.make(Message.Message, {
469
- created: new Date('2026-02-15T19:45:00Z').toISOString(),
470
- sender: { email: 'receipt@uber.com' },
471
- blocks: [
472
- {
473
- _tag: 'text',
474
- text: trim`
475
- From: receipt@uber.com
476
- Subject: Your trip receipt
477
-
478
- Trip Receipt
479
-
480
- Trip Date: February 15, 2026 at 7:30 PM
481
- Trip ID: 1A2B3C4D5E
482
-
483
- Route: London Heathrow Airport → The Savoy London
484
- Distance: 18.2 miles
485
- Duration: 45 minutes
486
-
487
- Fare breakdown:
488
- Base fare: £12.50
489
- Distance: £18.20
490
- Time: £11.25
491
- Booking fee: £2.50
492
- ─────────────────────────────────────
493
- Subtotal: £44.45
494
- VAT (20%): £8.89
495
- ─────────────────────────────────────
496
- Total: £53.34
497
-
498
- Payment method: Visa •••• 4521
499
-
500
- Thank you for riding with Uber!
501
- `,
502
- },
503
- ],
504
- }),
505
- Obj.make(Message.Message, {
506
- created: new Date('2026-02-16T20:15:00Z').toISOString(),
507
- sender: { email: 'receipts@opentable.com' },
508
- blocks: [
509
- {
510
- _tag: 'text',
511
- text: trim`
512
- From: receipts@opentable.com
513
- Subject: Your receipt from The Ivy
514
-
515
- Receipt
516
-
517
- Restaurant: The Ivy
518
- Address: 1-5 West Street, London WC2H 9NQ
519
- Date: February 16, 2026
520
- Time: 8:00 PM
521
- Table: 12
522
- Guests: 2
523
-
524
- Order Summary:
525
- ─────────────────────────────────────
526
- Starter - Scallops £18.00
527
- Main - Ribeye Steak £32.00
528
- Main - Sea Bass £28.00
529
- Side - Truffle Fries £8.50
530
- Wine - Chardonnay (bottle) £45.00
531
- Dessert - Chocolate Soufflé £12.00
532
- ─────────────────────────────────────
533
- Subtotal: £143.50
534
- Service charge (12.5%): £17.94
535
- ─────────────────────────────────────
536
- Total: £161.44
537
-
538
- Payment: Card ending in 4521
539
- Reservation ID: OT-987654321
540
-
541
- Thank you for dining with us!
542
- `,
543
- },
544
- ],
545
- }),
546
- Obj.make(Message.Message, {
547
- created: new Date('2026-02-17T09:00:00Z').toISOString(),
548
- sender: { email: 'receipts@amazon.co.uk' },
549
- blocks: [
550
- {
551
- _tag: 'text',
552
- text: trim`
553
- From: receipts@amazon.co.uk
554
- Subject: Your Amazon.co.uk order #123-4567890-1234567
555
-
556
- Order Confirmation
557
-
558
- Hello John Smith,
559
-
560
- We've received your order and will send a confirmation when it ships.
561
-
562
- Order #123-4567890-1234567
563
- Order Date: February 17, 2026
564
-
565
- Items Ordered:
566
- ─────────────────────────────────────
567
- 1x London Travel Guide 2026 £12.99
568
- 1x Universal Travel Adapter £8.50
569
- ─────────────────────────────────────
570
- Items: £21.49
571
- Shipping & Handling: £4.99
572
- ─────────────────────────────────────
573
- Order Total: £26.48
574
-
575
- Payment method: Visa ending in 4521
576
- Shipping to: The Savoy London, Strand, London WC2R 0EU
577
-
578
- Estimated delivery: February 18, 2026
579
-
580
- Thank you for your order!
581
- `,
582
- },
583
- ],
584
- }),
585
- // Unrelated emails
586
- Obj.make(Message.Message, {
587
- created: new Date('2026-01-30T08:00:00Z').toISOString(),
588
- sender: { email: 'newsletter@techcrunch.com' },
589
- blocks: [
590
- {
591
- _tag: 'text',
592
- text: trim`
593
- From: newsletter@techcrunch.com
594
- Subject: Weekly Tech Roundup - AI Breakthroughs & Startup News
595
-
596
- TechCrunch Weekly Newsletter
597
-
598
- This week in tech:
599
-
600
- • OpenAI announces GPT-5 with enhanced reasoning capabilities
601
- • New quantum computing milestone achieved by IBM
602
- • 5 startups that raised over $100M this week
603
- • The future of autonomous vehicles: what's next?
604
-
605
- Read the full stories: https://techcrunch.com/weekly
606
-
607
- Unsubscribe | Manage preferences
608
- `,
609
- },
610
- ],
611
- }),
612
- Obj.make(Message.Message, {
613
- created: new Date('2026-02-01T12:00:00Z').toISOString(),
614
- sender: { email: 'sarah.johnson@gmail.com' },
615
- blocks: [
616
- {
617
- _tag: 'text',
618
- text: trim`
619
- From: sarah.johnson@gmail.com
620
- Subject: Re: Coffee next week?
621
-
622
- Hey John,
623
-
624
- Sounds great! How about Tuesday at 2pm? The usual place?
625
-
626
- Let me know if that works for you.
627
-
628
- Cheers,
629
- Sarah
630
- `,
631
- },
632
- ],
633
- }),
634
- Obj.make(Message.Message, {
635
- created: new Date('2026-02-10T10:30:00Z').toISOString(),
636
- sender: { email: 'promotions@nike.com' },
637
- blocks: [
638
- {
639
- _tag: 'text',
640
- text: trim`
641
- From: promotions@nike.com
642
- Subject: 🏃‍♂️ 30% Off Running Shoes - Limited Time!
643
-
644
- Don't miss out!
645
-
646
- Get 30% off all running shoes this week only. Use code RUN30 at checkout.
647
-
648
- Shop now: https://nike.com/sale
649
-
650
- Valid until February 17, 2026.
651
-
652
- Unsubscribe | View in browser
653
- `,
654
- },
655
- ],
656
- }),
657
- Obj.make(Message.Message, {
658
- created: new Date('2026-02-14T16:20:00Z').toISOString(),
659
- sender: { email: 'notifications@github.com' },
660
- blocks: [
661
- {
662
- _tag: 'text',
663
- text: trim`
664
- From: notifications@github.com
665
- Subject: [dxos/dxos] New pull request: feat: add expense tracking
666
-
667
- johnsmith opened a pull request in dxos/dxos
668
-
669
- Title: feat: add expense tracking
670
- Branch: feature/expense-tracking → main
671
-
672
- This PR adds a new expense tracking feature to the assistant toolkit.
673
-
674
- Review it here: https://github.com/dxos/dxos/pull/1234
675
-
676
- You're receiving this because you're watching this repository.
677
- `,
678
- },
679
- ],
680
- }),
681
- Obj.make(Message.Message, {
682
- created: new Date('2026-02-18T11:00:00Z').toISOString(),
683
- sender: { email: 'receipts@britishairways.com' },
684
- blocks: [
685
- {
686
- _tag: 'text',
687
- text: trim`
688
- From: receipts@britishairways.com
689
- Subject: Your British Airways booking confirmation - BA288
690
-
691
- Dear Mr. Smith,
692
-
693
- Thank you for booking with British Airways. Your return flight reservation is confirmed.
694
-
695
- BOOKING REFERENCE: YK8N3Q
696
-
697
- FLIGHT DETAILS
698
- ─────────────────────────────────────
699
- Flight: BA288
700
- Date: 20 February 2026
701
- Route: London Heathrow (LHR) → San Francisco (SFO)
702
- Departure: 10:30 GMT
703
- Arrival: 13:15 PST
704
- Class: Economy
705
-
706
- PASSENGER
707
- ─────────────────────────────────────
708
- John Smith
709
-
710
- PAYMENT SUMMARY
711
- ─────────────────────────────────────
712
- Base fare: £520.00
713
- Taxes and fees: £135.00
714
- ─────────────────────────────────────
715
- TOTAL PAID: £655.00
716
-
717
- Payment method: Visa ending in 4521
718
- Transaction date: 18 February 2026
719
-
720
- Please keep this email for your records.
721
-
722
- Kind regards,
723
- British Airways
724
- `,
725
- },
726
- ],
727
- }),
728
- ];