@dxos/assistant-toolkit 0.10.0 → 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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/run-instructions.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Tool from '@effect/ai/Tool';\nimport * as Toolkit from '@effect/ai/Toolkit';\nimport * as Deferred from 'effect/Deferred';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { AiService, OpaqueToolkit } from '@dxos/ai';\nimport {\n AiSession,\n getOperationFromTool,\n makeToolExecutionService,\n makeToolResolverFromOperations,\n} from '@dxos/assistant';\nimport { Operation, Template, Trace } from '@dxos/compute';\nimport { Database, Feed, JsonSchema, Obj, Ref } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { DXN } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { trim } from '@dxos/util';\n\nimport { PromptError } from '../errors';\nimport * as Chat from '../types/Chat';\nimport { RunInstructions } from './definitions';\n\nconst DEFAULT_MODEL: DXN.DXN = DXN.make('com.anthropic.model.claude-opus-4-8.default');\n\nconst routineOutputSchema = (output: JsonSchema.JsonSchema): Schema.Schema.All => {\n // Routines default to Void output; completeJob still needs to accept arbitrary success payloads.\n if ('$id' in output && output.$id === '/schemas/unknown') {\n return Schema.Any;\n }\n return JsonSchema.toEffectSchema(output);\n};\n\nexport default RunInstructions.pipe(\n Operation.withHandler(\n Effect.fnUntraced(\n function* (data) {\n log.info('processing input', { input: data.input });\n\n const input = yield* Ref.isRef(data.input)\n ? Database.load(data.input).pipe(Effect.map(Obj.toJSON))\n : Effect.succeed(data.input);\n\n yield* Database.flush();\n const instructions = yield* Database.load(data.instructions);\n yield* Trace.emitStatus(`Running ${instructions.id}`);\n\n log.info('starting agent', { instructions: instructions.id, input });\n\n // Bind the instructions' own refs, dropping any that no longer resolve. The refs must be\n // bound as-is (not re-wrapped via `Ref.make`) to preserve their registry DXN: bindings\n // are persisted to the conversation feed, and registry-only skills have no space-DB\n // identity, so an EID ref would not resolve when the binding is re-read.\n const skillRefs = yield* Effect.filter(instructions.skills, (ref) =>\n Database.load(ref).pipe(\n Effect.as(true),\n Effect.catchTag('EntityNotFoundError', () => Effect.succeed(false)),\n ),\n );\n\n // Bind the instructions' context objects (sibling of skills), dropping any that no longer resolve.\n const objectRefs = yield* Effect.filter(instructions.objects ?? [], (ref) =>\n Database.load(ref).pipe(\n Effect.as(true),\n Effect.catchTag('EntityNotFoundError', () => Effect.succeed(false)),\n ),\n );\n\n const textDoc = yield* Database.load(instructions.text);\n let promptText = Template.process(textDoc.content, input);\n\n if (input !== undefined) {\n promptText += `\\n<input>${JSON.stringify(input)}</input>`;\n }\n\n let systemText = trim`\n You are an agent running in the non-interactive mode.\n The user is unable to see what you are doing, and cannot answer any questions.\n Do not ask questions.\n Complete the task before you, and at the end call [completeJob] with the output.\n If you are unable to complete the task, call [completeJob] with the failure reason.\n If no output is required, call [completeJob] with an empty object: {}\n Do not stop until you call [completeJob].\n `;\n if (data.systemInstructions) {\n systemText += `\\n${data.systemInstructions}`;\n }\n\n const modelLayer = AiService.model(DXN.getName(data.model ?? DEFAULT_MODEL));\n\n let feed: Feed.Feed;\n if (data.chat) {\n const chat = yield* Database.load(data.chat);\n invariant(Obj.instanceOf(Chat.Chat, chat), 'Expected Chat object.');\n feed = yield* Database.load(chat.feed);\n } else {\n feed = yield* Database.add(Feed.make());\n }\n\n const resultSink = yield* Deferred.make<unknown, PromptError>();\n const promptToolkit = makePromptAgentToolkit({\n output: routineOutputSchema(instructions.output),\n resultSink,\n });\n\n const runtime = yield* Effect.runtime<Database.Service>();\n const session = yield* EffectEx.acquireReleaseResource(() => new AiSession.Session({ feed, runtime }));\n\n yield* Effect.promise(() =>\n session.context.bind({\n skills: skillRefs,\n objects: data.chat ? [...objectRefs, data.chat] : objectRefs,\n }),\n );\n\n yield* session\n .createRequest({\n prompt: promptText,\n system: systemText,\n toolkit: promptToolkit,\n })\n .pipe(\n Effect.provide(\n Layer.mergeAll(modelLayer, ToolExecutionService({ feed }), makeToolResolverFromOperations()),\n ),\n );\n\n return yield* Deferred.poll(resultSink).pipe(\n Effect.flatten,\n Effect.flatten,\n Effect.catchTag('NoSuchElementException', () =>\n Effect.gen(function* () {\n yield* session\n .createRequest({\n prompt: 'You must signal task completion by calling [completeJob] with the output or failure reason.',\n system: systemText,\n toolkit: promptToolkit,\n })\n .pipe(\n Effect.provide(\n Layer.mergeAll(modelLayer, ToolExecutionService({ feed }), makeToolResolverFromOperations()),\n ),\n );\n\n return yield* Deferred.poll(resultSink).pipe(\n Effect.flatten,\n Effect.flatten,\n Effect.catchTag('NoSuchElementException', () =>\n Effect.fail(new PromptError('Agent did not signal task completion.', {})),\n ),\n );\n }),\n ),\n );\n },\n Effect.tapBoth({\n onSuccess: () => Database.flush(),\n onFailure: () => Database.flush(),\n }),\n Effect.scoped,\n ),\n ),\n Operation.opaqueHandler,\n);\n\nconst makePromptAgentToolkit = (options: {\n output: Schema.Schema.All;\n resultSink: Deferred.Deferred<unknown, PromptError>;\n}) => {\n class PromptAgentToolkit extends Toolkit.make(\n Tool.make('completeJob', {\n parameters: {\n success: Schema.optional(options.output),\n failure: Schema.optional(\n Schema.Struct({\n message: Schema.String.annotations({\n description: 'Short message describing the error.',\n }),\n description: Schema.optional(Schema.String).annotations({\n description: 'Optional longer message describing in detail what went wrong',\n }),\n }),\n ),\n },\n }),\n ) {}\n const layer = PromptAgentToolkit.toLayer({\n completeJob: Effect.fnUntraced(function* (result) {\n if (result.failure) {\n yield* Deferred.fail(\n options.resultSink,\n new PromptError(result.failure.message, {\n description: result.failure.description,\n }),\n );\n } else {\n yield* Deferred.succeed(options.resultSink, result.success);\n }\n }),\n });\n\n return OpaqueToolkit.make(PromptAgentToolkit, layer);\n};\n\ninterface ToolExecutionServiceOptions {\n feed: Feed.Feed;\n}\n\nconst ToolExecutionService = ({ feed }: ToolExecutionServiceOptions) =>\n Layer.unwrapEffect(\n Effect.gen(function* () {\n const operationInvoker = yield* Operation.Service;\n return makeToolExecutionService({\n invoke: (tool, input) =>\n Effect.gen(function* () {\n const operationDef = getOperationFromTool(tool).pipe(Option.getOrThrow);\n log('invoking operation', { operationDef, input });\n const result = yield* operationInvoker\n .invoke(operationDef, input, {\n conversation: Obj.getURI(feed),\n })\n .pipe(Effect.orDie);\n log('result', { result });\n return result;\n }),\n });\n }),\n );\n"],
5
- "mappings": "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",
6
- "names": ["Tool", "Toolkit", "Deferred", "Effect", "Layer", "Option", "Schema", "AiService", "OpaqueToolkit", "AiSession", "getOperationFromTool", "makeToolExecutionService", "makeToolResolverFromOperations", "Operation", "Template", "Trace", "Database", "Feed", "JsonSchema", "Obj", "Ref", "EffectEx", "invariant", "DXN", "log", "trim", "DEFAULT_MODEL", "output", "toEffectSchema", "RunInstructions", "Operation", "data", "input", "Database", "instructions", "Trace", "emitStatus", "log", "info", "objectRefs", "Effect", "load", "catchTag", "succeed", "promptText", "Template", "textDoc", "undefined", "JSON", "stringify", "systemText", "trim", "modelLayer", "AiService", "invariant", "Obj", "feed", "chat", "add", "Feed", "make", "resultSink", "Deferred", "routineOutputSchema", "runtime", "objects", "session", "prompt", "system", "toolkit", "pipe", "makeToolResolverFromOperations", "createRequest", "tapBoth", "onSuccess", "onFailure", "scoped", "opaqueHandler", "makePromptAgentToolkit", "options", "PromptAgentToolkit", "Toolkit", "failure", "Schema", "String", "annotations", "description", "result", "ToolExecutionService", "unwrapEffect", "makeToolExecutionService", "invoke", "operationDef", "conversation", "getURI", "orDie"]
7
- }
@@ -1,23 +0,0 @@
1
- import {
2
- SaveMemory
3
- } from "./chunk-LBA5UOLF.mjs";
4
- import {
5
- Memory
6
- } from "./chunk-EPQCDGIV.mjs";
7
- import "./chunk-J5LGTIGS.mjs";
8
-
9
- // src/skills/memory/operations/save.ts
10
- import * as Effect from "effect/Effect";
11
- import { Operation } from "@dxos/compute";
12
- import { Database, Entity, Obj } from "@dxos/echo";
13
- var save_default = SaveMemory.pipe(Operation.withHandler(Effect.fn(function* ({ title, content }) {
14
- const memory = yield* Database.add(Obj.make(Memory, {
15
- title,
16
- content
17
- }));
18
- return Entity.toJSON(memory);
19
- })));
20
- export {
21
- save_default as default
22
- };
23
- //# sourceMappingURL=save-UYVRA4RS.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/memory/operations/save.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Entity, Obj } from '@dxos/echo';\n\nimport { Memory } from '../../../types/Memory';\nimport { SaveMemory } from './definitions';\n\nexport default SaveMemory.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ title, content }) {\n const memory = yield* Database.add(Obj.make(Memory, { title, content }));\n return Entity.toJSON(memory);\n }),\n ),\n);\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,QAAQC,WAAW;AAKtC,IAAA,eAAeC,WAAWC,KACxBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,OAAOC,QAAO,GAAE;AACrC,QAAMC,SAAS,OAAOC,SAASC,IAAIC,IAAIC,KAAKC,QAAQ;IAAEP;IAAOC;EAAQ,CAAA,CAAA;AACrE,SAAOO,OAAOC,OAAOP,MAAAA;AACvB,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "Operation", "Database", "Entity", "Obj", "SaveMemory", "pipe", "Operation", "withHandler", "fn", "title", "content", "memory", "Database", "add", "Obj", "make", "Memory", "Entity", "toJSON"]
7
- }
@@ -1,25 +0,0 @@
1
- import {
2
- SchemaAdd
3
- } from "./chunk-YQSQRSXG.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/database/operations/schema-add.ts
7
- import * as Effect from "effect/Effect";
8
- import { Operation } from "@dxos/compute";
9
- import { Database, Type } from "@dxos/echo";
10
- var schema_add_default = SchemaAdd.pipe(Operation.withHandler(Effect.fn(function* ({ name, typename, jsonSchema }) {
11
- const schema = yield* Database.addType(Type.makeObjectFromJsonSchema({
12
- typename,
13
- version: "0.1.0",
14
- jsonSchema
15
- }));
16
- if (name) {
17
- Type.update(schema, (draft) => {
18
- draft.name = name;
19
- });
20
- }
21
- })));
22
- export {
23
- schema_add_default as default
24
- };
25
- //# sourceMappingURL=schema-add-5NOK2RWE.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/database/operations/schema-add.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Type } from '@dxos/echo';\n\nimport { SchemaAdd } from './definitions';\n\nexport default SchemaAdd.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, typename, jsonSchema }) {\n const schema = yield* Database.addType(Type.makeObjectFromJsonSchema({ typename, version: '0.1.0', jsonSchema }));\n if (name) {\n Type.update(schema, (draft) => {\n draft.name = name;\n });\n }\n }),\n ),\n);\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,YAAY;AAI/B,IAAA,qBAAeC,UAAUC,KACvBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,UAAUC,WAAU,GAAE;AACjD,QAAMC,SAAS,OAAOC,SAASC,QAAQC,KAAKC,yBAAyB;IAAEN;IAAUO,SAAS;IAASN;EAAW,CAAA,CAAA;AAC9G,MAAIF,MAAM;AACRM,SAAKG,OAAON,QAAQ,CAACO,UAAAA;AACnBA,YAAMV,OAAOA;IACf,CAAA;EACF;AACF,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "Operation", "Database", "Type", "SchemaAdd", "pipe", "Operation", "withHandler", "fn", "name", "typename", "jsonSchema", "schema", "Database", "addType", "Type", "makeObjectFromJsonSchema", "version", "update", "draft"]
7
- }
@@ -1,37 +0,0 @@
1
- import {
2
- SchemaList
3
- } from "./chunk-YQSQRSXG.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/database/operations/schema-list.ts
7
- import * as Effect from "effect/Effect";
8
- import { Instructions, Operation, Skill } from "@dxos/compute";
9
- import { Database, Feed, Filter, JsonSchema, Query, Scope, Type, View } from "@dxos/echo";
10
- var EXCLUDED_TYPES = [
11
- Type.Type,
12
- View.View,
13
- Instructions.Instructions,
14
- Skill.Skill,
15
- Feed.Feed
16
- ];
17
- var excludedTypenames = EXCLUDED_TYPES.map((type) => Type.getTypename(type));
18
- var schema_list_default = SchemaList.pipe(Operation.withHandler(Effect.fn(function* () {
19
- const types = yield* Database.query(Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry())).run;
20
- return [
21
- ...types
22
- ].filter((schema) => !excludedTypenames.includes(Type.getTypename(schema))).sort((a, b) => {
23
- const aKey = `${Type.getTypename(a)}:${Type.getVersion(a)}`;
24
- const bKey = `${Type.getTypename(b)}:${Type.getVersion(b)}`;
25
- return aKey.localeCompare(bKey);
26
- }).map((schema) => {
27
- return {
28
- typename: Type.getTypename(schema),
29
- jsonSchema: JsonSchema.toJsonSchema(schema),
30
- kind: Type.isRelation(schema) ? "relation" : "record"
31
- };
32
- });
33
- })));
34
- export {
35
- schema_list_default as default
36
- };
37
- //# sourceMappingURL=schema-list-BZUR5KMX.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/database/operations/schema-list.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Instructions, Operation, Skill } from '@dxos/compute';\nimport { Database, Feed, Filter, JsonSchema, Query, Scope, Type, View } from '@dxos/echo';\n\nimport { SchemaList } from './definitions';\n\n// TODO(dmaretskyi): This is a balance between not filling the agent's context with too many types and not excluding important types.\nconst EXCLUDED_TYPES = [Type.Type, View.View, Instructions.Instructions, Skill.Skill, Feed.Feed];\nconst excludedTypenames = EXCLUDED_TYPES.map((type) => Type.getTypename(type));\n\nexport default SchemaList.pipe(\n Operation.withHandler(\n Effect.fn(function* () {\n const types = yield* Database.query(Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry()))\n .run;\n return [...types]\n .filter((schema) => !excludedTypenames.includes(Type.getTypename(schema)))\n .sort((a, b) => {\n const aKey = `${Type.getTypename(a)}:${Type.getVersion(a)}`;\n const bKey = `${Type.getTypename(b)}:${Type.getVersion(b)}`;\n return aKey.localeCompare(bKey);\n })\n .map((schema) => {\n return {\n typename: Type.getTypename(schema),\n jsonSchema: JsonSchema.toJsonSchema(schema),\n kind: Type.isRelation(schema) ? 'relation' : 'record',\n };\n });\n }),\n ),\n);\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,WAAWC,aAAa;AAC/C,SAASC,UAAUC,MAAMC,QAAQC,YAAYC,OAAOC,OAAOC,MAAMC,YAAY;AAK7E,IAAMC,iBAAiB;EAACC,KAAKA;EAAMC,KAAKA;EAAMC,aAAaA;EAAcC,MAAMA;EAAOC,KAAKA;;AAC3F,IAAMC,oBAAoBN,eAAeO,IAAI,CAACC,SAASP,KAAKQ,YAAYD,IAAAA,CAAAA;AAExE,IAAA,sBAAeE,WAAWC,KACxBC,UAAUC,YACDC,UAAG,aAAA;AACR,QAAMC,QAAQ,OAAOC,SAASC,MAAMC,MAAMC,OAAOC,OAAOZ,KAAKP,KAAKA,IAAI,CAAA,EAAGoB,KAAKC,MAAMC,MAAK,GAAID,MAAME,SAAQ,CAAA,CAAA,EACxGC;AACH,SAAO;OAAIV;IACRW,OAAO,CAACC,WAAW,CAACrB,kBAAkBsB,SAAS3B,KAAKQ,YAAYkB,MAAAA,CAAAA,CAAAA,EAChEE,KAAK,CAACC,GAAGC,MAAAA;AACR,UAAMC,OAAO,GAAG/B,KAAKQ,YAAYqB,CAAAA,CAAAA,IAAM7B,KAAKgC,WAAWH,CAAAA,CAAAA;AACvD,UAAMI,OAAO,GAAGjC,KAAKQ,YAAYsB,CAAAA,CAAAA,IAAM9B,KAAKgC,WAAWF,CAAAA,CAAAA;AACvD,WAAOC,KAAKG,cAAcD,IAAAA;EAC5B,CAAA,EACC3B,IAAI,CAACoB,WAAAA;AACJ,WAAO;MACLS,UAAUnC,KAAKQ,YAAYkB,MAAAA;MAC3BU,YAAYC,WAAWC,aAAaZ,MAAAA;MACpCa,MAAMvC,KAAKwC,WAAWd,MAAAA,IAAU,aAAa;IAC/C;EACF,CAAA;AACJ,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "Instructions", "Operation", "Skill", "Database", "Feed", "Filter", "JsonSchema", "Query", "Scope", "Type", "View", "EXCLUDED_TYPES", "Type", "View", "Instructions", "Skill", "Feed", "excludedTypenames", "map", "type", "getTypename", "SchemaList", "pipe", "Operation", "withHandler", "fn", "types", "Database", "query", "Query", "select", "Filter", "from", "Scope", "space", "registry", "run", "filter", "schema", "includes", "sort", "a", "b", "aKey", "getVersion", "bKey", "localeCompare", "typename", "jsonSchema", "JsonSchema", "toJsonSchema", "kind", "isRelation"]
7
- }
@@ -1,65 +0,0 @@
1
- import {
2
- SetAlarm
3
- } from "./chunk-JBTXZQ5G.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/alarm/operations/set-alarm.ts
7
- import * as Clock from "effect/Clock";
8
- import * as DateTime from "effect/DateTime";
9
- import * as Effect from "effect/Effect";
10
- import * as Either2 from "effect/Either";
11
- import { Harness } from "@dxos/assistant";
12
- import { Operation } from "@dxos/compute";
13
-
14
- // src/skills/alarm/operations/resolve-wake-at.ts
15
- import * as Duration from "effect/Duration";
16
- import * as Either from "effect/Either";
17
- import * as Option from "effect/Option";
18
- var DURATION_PATTERN = /^(\d+(?:\.\d+)?)\s+(\S+)$/;
19
- var resolveWakeAt = (input, now) => {
20
- const { in: inDuration, at } = input;
21
- if (inDuration != null && at != null) {
22
- return Either.left('Specify either "in" or "at", not both.');
23
- }
24
- if (at != null) {
25
- const timestamp = new Date(at).getTime();
26
- if (Number.isNaN(timestamp)) {
27
- return Either.left(`Invalid "at" timestamp: "${at}". Provide an ISO-8601 date-time string.`);
28
- }
29
- return Either.right(timestamp);
30
- }
31
- if (inDuration != null) {
32
- const match = inDuration.trim().match(DURATION_PATTERN);
33
- if (!match) {
34
- return Either.left(`Invalid "in" duration: "${inDuration}". Use a value like "30 seconds" or "5 minutes".`);
35
- }
36
- const duration = Duration.decodeUnknown(inDuration.trim());
37
- if (Option.isNone(duration)) {
38
- return Either.left(`Invalid "in" duration: "${inDuration}". Use a value like "30 seconds" or "5 minutes".`);
39
- }
40
- return Either.right(now + Duration.toMillis(duration.value));
41
- }
42
- return Either.left('Specify either "in" (a duration from now) or "at" (an absolute time).');
43
- };
44
-
45
- // src/skills/alarm/operations/set-alarm.ts
46
- var set_alarm_default = SetAlarm.pipe(Operation.withHandler(Effect.fn(function* ({ in: inDuration, at, message }) {
47
- const now = yield* Clock.currentTimeMillis;
48
- const resolved = resolveWakeAt({
49
- in: inDuration,
50
- at
51
- }, now);
52
- if (Either2.isLeft(resolved)) {
53
- return resolved.left;
54
- }
55
- const wakeAt = DateTime.unsafeMake(resolved.right);
56
- yield* Harness.setAlarm({
57
- at: wakeAt,
58
- message: message ?? null
59
- });
60
- return `Alarm scheduled to wake you at ${new Date(resolved.right).toISOString()}.`;
61
- })));
62
- export {
63
- set_alarm_default as default
64
- };
65
- //# sourceMappingURL=set-alarm-BD3NEYSU.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/alarm/operations/set-alarm.ts", "../../../src/skills/alarm/operations/resolve-wake-at.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Clock from 'effect/Clock';\nimport * as DateTime from 'effect/DateTime';\nimport * as Effect from 'effect/Effect';\nimport * as Either from 'effect/Either';\n\nimport { Harness } from '@dxos/assistant';\nimport { Operation } from '@dxos/compute';\n\nimport { SetAlarm } from './definitions';\nimport { resolveWakeAt } from './resolve-wake-at';\n\n/**\n * Schedules a self-wake on the owning host via {@link Harness.setAlarm}. The host delivers the\n * (optional) reminder message when the alarm fires.\n */\nexport default SetAlarm.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ in: inDuration, at, message }) {\n const now = yield* Clock.currentTimeMillis;\n const resolved = resolveWakeAt({ in: inDuration, at }, now);\n if (Either.isLeft(resolved)) {\n return resolved.left;\n }\n const wakeAt = DateTime.unsafeMake(resolved.right);\n yield* Harness.setAlarm({ at: wakeAt, message: message ?? null });\n return `Alarm scheduled to wake you at ${new Date(resolved.right).toISOString()}.`;\n }),\n ),\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Duration from 'effect/Duration';\nimport * as Either from 'effect/Either';\nimport * as Option from 'effect/Option';\n\ninterface ResolveAlarmInput {\n /** Duration from now, e.g. `'30 seconds'`, `'5 minutes'`, `'1 hour'`. */\n in?: string;\n /** Absolute ISO-8601 timestamp, e.g. `'2026-06-04T18:00:00.000Z'`. */\n at?: string;\n}\n\nconst DURATION_PATTERN = /^(\\d+(?:\\.\\d+)?)\\s+(\\S+)$/;\n\n/**\n * Resolves an alarm specification into an absolute UNIX timestamp (ms).\n * Returns a {@link Either.left} with a human-readable message describing invalid input.\n */\nexport const resolveWakeAt = (input: ResolveAlarmInput, now: number): Either.Either<number, string> => {\n const { in: inDuration, at } = input;\n if (inDuration != null && at != null) {\n return Either.left('Specify either \"in\" or \"at\", not both.');\n }\n if (at != null) {\n const timestamp = new Date(at).getTime();\n if (Number.isNaN(timestamp)) {\n return Either.left(`Invalid \"at\" timestamp: \"${at}\". Provide an ISO-8601 date-time string.`);\n }\n return Either.right(timestamp);\n }\n if (inDuration != null) {\n const match = inDuration.trim().match(DURATION_PATTERN);\n if (!match) {\n return Either.left(`Invalid \"in\" duration: \"${inDuration}\". Use a value like \"30 seconds\" or \"5 minutes\".`);\n }\n const duration = Duration.decodeUnknown(inDuration.trim());\n if (Option.isNone(duration)) {\n return Either.left(`Invalid \"in\" duration: \"${inDuration}\". Use a value like \"30 seconds\" or \"5 minutes\".`);\n }\n return Either.right(now + Duration.toMillis(duration.value));\n }\n return Either.left('Specify either \"in\" (a duration from now) or \"at\" (an absolute time).');\n};\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AACxB,YAAYC,aAAY;AAExB,SAASC,eAAe;AACxB,SAASC,iBAAiB;;;ACN1B,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AACxB,YAAYC,YAAY;AASxB,IAAMC,mBAAmB;AAMlB,IAAMC,gBAAgB,CAACC,OAA0BC,QAAAA;AACtD,QAAM,EAAEC,IAAIC,YAAYC,GAAE,IAAKJ;AAC/B,MAAIG,cAAc,QAAQC,MAAM,MAAM;AACpC,WAAcC,YAAK,wCAAA;EACrB;AACA,MAAID,MAAM,MAAM;AACd,UAAME,YAAY,IAAIC,KAAKH,EAAAA,EAAII,QAAO;AACtC,QAAIC,OAAOC,MAAMJ,SAAAA,GAAY;AAC3B,aAAcD,YAAK,4BAA4BD,EAAAA,0CAA4C;IAC7F;AACA,WAAcO,aAAML,SAAAA;EACtB;AACA,MAAIH,cAAc,MAAM;AACtB,UAAMS,QAAQT,WAAWU,KAAI,EAAGD,MAAMd,gBAAAA;AACtC,QAAI,CAACc,OAAO;AACV,aAAcP,YAAK,2BAA2BF,UAAAA,kDAA4D;IAC5G;AACA,UAAMW,WAAoBC,uBAAcZ,WAAWU,KAAI,CAAA;AACvD,QAAWG,cAAOF,QAAAA,GAAW;AAC3B,aAAcT,YAAK,2BAA2BF,UAAAA,kDAA4D;IAC5G;AACA,WAAcQ,aAAMV,MAAegB,kBAASH,SAASI,KAAK,CAAA;EAC5D;AACA,SAAcb,YAAK,uEAAA;AACrB;;;AD1BA,IAAA,oBAAec,SAASC,KACtBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,IAAIC,YAAYC,IAAIC,QAAO,GAAE;AAClD,QAAMC,MAAM,OAAaC;AACzB,QAAMC,WAAWC,cAAc;IAAEP,IAAIC;IAAYC;EAAG,GAAGE,GAAAA;AACvD,MAAWI,eAAOF,QAAAA,GAAW;AAC3B,WAAOA,SAASG;EAClB;AACA,QAAMC,SAAkBC,oBAAWL,SAASM,KAAK;AACjD,SAAOC,QAAQC,SAAS;IAAEZ,IAAIQ;IAAQP,SAASA,WAAW;EAAK,CAAA;AAC/D,SAAO,kCAAkC,IAAIY,KAAKT,SAASM,KAAK,EAAEI,YAAW,CAAA;AAC/E,CAAA,CAAA,CAAA;",
6
- "names": ["Clock", "DateTime", "Effect", "Either", "Harness", "Operation", "Duration", "Either", "Option", "DURATION_PATTERN", "resolveWakeAt", "input", "now", "in", "inDuration", "at", "left", "timestamp", "Date", "getTime", "Number", "isNaN", "right", "match", "trim", "duration", "decodeUnknown", "isNone", "toMillis", "value", "SetAlarm", "pipe", "Operation", "withHandler", "fn", "in", "inDuration", "at", "message", "now", "currentTimeMillis", "resolved", "resolveWakeAt", "isLeft", "left", "wakeAt", "unsafeMake", "right", "Harness", "setAlarm", "Date", "toISOString"]
7
- }
@@ -1,166 +0,0 @@
1
- import {
2
- SyncIssues,
3
- syncObjects
4
- } from "./chunk-LL3MOQUZ.mjs";
5
- import "./chunk-J5LGTIGS.mjs";
6
-
7
- // src/skills/linear/operations/sync-issues.ts
8
- import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
9
- import * as HttpClient from "@effect/platform/HttpClient";
10
- import * as Array from "effect/Array";
11
- import * as Effect from "effect/Effect";
12
- import * as Function from "effect/Function";
13
- import { Credential, Operation } from "@dxos/compute";
14
- import { Database, Filter, Obj, Query, Ref } from "@dxos/echo";
15
- import { withAuthorization } from "@dxos/functions";
16
- import { log } from "@dxos/log";
17
- import { Person, Pipeline, Task } from "@dxos/types";
18
-
19
- // src/util/graphql.ts
20
- import * as HttpBody from "@effect/platform/HttpBody";
21
- var graphqlRequestBody = (query, variables = {}) => HttpBody.json({
22
- query,
23
- variables
24
- });
25
-
26
- // src/skills/linear/operations/sync-issues.ts
27
- var __dxlog_file = "/__w/dxos/dxos/packages/core/compute/assistant-toolkit/src/skills/linear/operations/sync-issues.ts";
28
- var queryIssues = `
29
- query Issues($teamId: String!, $after: DateTimeOrDuration!) {
30
- team(id: $teamId) {
31
- id
32
- name
33
-
34
-
35
- issues(last: 150, orderBy: updatedAt, filter: {
36
- updatedAt: { gt: $after }
37
- }) {
38
- edges {
39
- node {
40
- id
41
- title
42
- createdAt
43
- updatedAt
44
- description
45
- assignee { id, name }
46
- state {
47
- name
48
- }
49
- project {
50
- id
51
- name
52
- }
53
- }
54
- cursor
55
- }
56
- pageInfo {
57
- hasNextPage
58
- endCursor
59
- }
60
- }
61
- }
62
- }
63
- `;
64
- var LINEAR_ID_KEY = "linear.app/id";
65
- var LINEAR_TEAM_ID_KEY = "linear.app/teamId";
66
- var LINEAR_UPDATED_AT_KEY = "linear.app/updatedAt";
67
- var sync_issues_default = SyncIssues.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ team }) {
68
- const credential = yield* Credential.CredentialsService.getCredential({
69
- service: "linear.app"
70
- });
71
- const client = yield* HttpClient.HttpClient.pipe(Effect.map(withAuthorization(credential.apiKey)));
72
- const after = yield* getLatestUpdateTimestamp(team, Task.Task);
73
- log.info("will fetch", {
74
- after
75
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 62, S: this });
76
- const response = yield* client.post("https://api.linear.app/graphql", {
77
- body: yield* graphqlRequestBody(queryIssues, {
78
- teamId: team,
79
- after
80
- })
81
- });
82
- const json2 = yield* response.json;
83
- const tasks = json2.data.team.issues.edges.map((edge) => mapLinearIssue(edge.node, {
84
- teamId: team
85
- }));
86
- log.info("Fetched tasks", {
87
- count: tasks.length
88
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: this });
89
- return {
90
- objects: yield* syncObjects(tasks, {
91
- foreignKeyId: LINEAR_ID_KEY
92
- }),
93
- syncComplete: tasks.length < 150
94
- };
95
- }, Effect.provide(FetchHttpClient.layer))));
96
- var getLatestUpdateTimestamp = Effect.fnUntraced(function* (teamId, dataType) {
97
- const existingTasks = yield* Database.query(Query.type(dataType).select(Filter.foreignKeys(dataType, [
98
- {
99
- source: LINEAR_TEAM_ID_KEY,
100
- id: teamId
101
- }
102
- ]))).run;
103
- return Function.pipe(existingTasks, Array.map((task) => Obj.getKeys(task, LINEAR_UPDATED_AT_KEY).at(0)?.id), Array.filter((x) => x !== void 0), Array.reduce("2025-01-01T00:00:00.000Z", (acc, x) => x > acc ? x : acc));
104
- });
105
- var mapLinearPerson = (person, { teamId }) => Obj.make(Person.Person, {
106
- [Obj.Meta]: {
107
- keys: [
108
- {
109
- id: person.id,
110
- source: LINEAR_ID_KEY
111
- },
112
- {
113
- id: teamId,
114
- source: LINEAR_TEAM_ID_KEY
115
- }
116
- ]
117
- },
118
- nickname: person.name
119
- });
120
- var mapLinearIssue = (issue, { teamId }) => Obj.make(Task.Task, {
121
- [Obj.Meta]: {
122
- keys: [
123
- {
124
- id: issue.id,
125
- source: LINEAR_ID_KEY
126
- },
127
- {
128
- id: issue.updatedAt,
129
- source: LINEAR_UPDATED_AT_KEY
130
- },
131
- {
132
- id: teamId,
133
- source: LINEAR_TEAM_ID_KEY
134
- }
135
- ]
136
- },
137
- title: issue.title ?? void 0,
138
- description: issue.description ?? void 0,
139
- assigned: !issue.assignee ? void 0 : Ref.make(mapLinearPerson(issue.assignee, {
140
- teamId
141
- })),
142
- // TODO(dmaretskyi): Sync those (+ linear team as org?).
143
- // state: issue.state.name,
144
- project: !issue.project ? void 0 : Ref.make(Pipeline.make({
145
- [Obj.Meta]: {
146
- keys: [
147
- {
148
- id: issue.project.id,
149
- source: LINEAR_ID_KEY
150
- },
151
- {
152
- id: teamId,
153
- source: LINEAR_TEAM_ID_KEY
154
- }
155
- ]
156
- },
157
- name: issue.project.name
158
- }))
159
- });
160
- export {
161
- LINEAR_ID_KEY,
162
- LINEAR_TEAM_ID_KEY,
163
- LINEAR_UPDATED_AT_KEY,
164
- sync_issues_default as default
165
- };
166
- //# sourceMappingURL=sync-issues-O76MCMD3.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/linear/operations/sync-issues.ts", "../../../src/util/graphql.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\n\nimport { Credential, Operation } from '@dxos/compute';\nimport { Database, Filter, Obj, Query, Ref, type Type } from '@dxos/echo';\nimport { withAuthorization } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Person, Pipeline, Task } from '@dxos/types';\n\nimport { syncObjects } from '../../../sync';\nimport { graphqlRequestBody } from '../../../util';\nimport { SyncIssues } from './definitions';\n\nconst queryIssues = `\nquery Issues($teamId: String!, $after: DateTimeOrDuration!) {\n team(id: $teamId) {\n id\n name\n\n\n issues(last: 150, orderBy: updatedAt, filter: {\n updatedAt: { gt: $after }\n }) {\n edges {\n node {\n id\n title\n createdAt\n updatedAt\n description\n assignee { id, name }\n state {\n name\n }\n project {\n id\n name\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n}\n`;\n\ntype LinearIssue = {\n id: string;\n title: string;\n createdAt: string;\n updatedAt: string;\n description: string;\n assignee: LinearPerson;\n state: { name: string };\n project: { id: string; name: string };\n};\n\ntype LinearPerson = {\n id: string;\n name: string;\n};\n\nexport const LINEAR_ID_KEY = 'linear.app/id';\nexport const LINEAR_TEAM_ID_KEY = 'linear.app/teamId';\nexport const LINEAR_UPDATED_AT_KEY = 'linear.app/updatedAt';\n\nexport default SyncIssues.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ team }) {\n const credential = yield* Credential.CredentialsService.getCredential({ service: 'linear.app' });\n const client = yield* HttpClient.HttpClient.pipe(Effect.map(withAuthorization(credential.apiKey!)));\n\n const after = yield* getLatestUpdateTimestamp(team, Task.Task);\n log.info('will fetch', { after });\n\n const response = yield* client.post('https://api.linear.app/graphql', {\n body: yield* graphqlRequestBody(queryIssues, {\n teamId: team,\n after,\n }),\n });\n const json: any = yield* response.json;\n const tasks = (json.data.team.issues.edges as any[]).map((edge: any) =>\n mapLinearIssue(edge.node as LinearIssue, { teamId: team }),\n );\n log.info('Fetched tasks', { count: tasks.length });\n\n return {\n objects: yield* syncObjects(tasks, { foreignKeyId: LINEAR_ID_KEY }),\n syncComplete: tasks.length < 150,\n };\n }, Effect.provide(FetchHttpClient.layer)),\n ),\n);\n\nconst getLatestUpdateTimestamp: (\n teamId: string,\n dataType: Type.AnyObj,\n) => Effect.Effect<string, never, Database.Service> = Effect.fnUntraced(function* (teamId, dataType) {\n const existingTasks = yield* Database.query(\n Query.type(dataType).select(Filter.foreignKeys(dataType, [{ source: LINEAR_TEAM_ID_KEY, id: teamId }])),\n ).run;\n return Function.pipe(\n existingTasks,\n Array.map((task) => Obj.getKeys(task, LINEAR_UPDATED_AT_KEY).at(0)?.id),\n Array.filter((x) => x !== undefined),\n Array.reduce('2025-01-01T00:00:00.000Z', (acc: string, x: string) => (x > acc ? x : acc)),\n );\n});\n\nconst mapLinearPerson = (person: LinearPerson, { teamId }: { teamId: string }): Person.Person =>\n Obj.make(Person.Person, {\n [Obj.Meta]: {\n keys: [\n {\n id: person.id,\n source: LINEAR_ID_KEY,\n },\n {\n id: teamId,\n source: LINEAR_TEAM_ID_KEY,\n },\n ],\n },\n nickname: person.name,\n });\n\nconst mapLinearIssue = (issue: LinearIssue, { teamId }: { teamId: string }): Task.Task =>\n Obj.make(Task.Task, {\n [Obj.Meta]: {\n keys: [\n {\n id: issue.id,\n source: LINEAR_ID_KEY,\n },\n {\n id: issue.updatedAt,\n source: LINEAR_UPDATED_AT_KEY,\n },\n {\n id: teamId,\n source: LINEAR_TEAM_ID_KEY,\n },\n ],\n },\n title: issue.title ?? undefined,\n description: issue.description ?? undefined,\n assigned: !issue.assignee ? undefined : Ref.make(mapLinearPerson(issue.assignee, { teamId })),\n // TODO(dmaretskyi): Sync those (+ linear team as org?).\n // state: issue.state.name,\n\n project: !issue.project\n ? undefined\n : Ref.make(\n Pipeline.make({\n [Obj.Meta]: {\n keys: [\n {\n id: issue.project.id,\n source: LINEAR_ID_KEY,\n },\n {\n id: teamId,\n source: LINEAR_TEAM_ID_KEY,\n },\n ],\n },\n name: issue.project.name,\n }),\n ),\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as HttpBody from '@effect/platform/HttpBody';\n\n/**\n * Template tag literal to get syntax highlighting for the query.\n *\n * @example\n * ```ts\n * const query = gql`\n * query Team($teamId: String!) {\n * team(id: $teamId) {\n * id\n * name\n * }\n * }\n * `;\n * ```\n */\nexport const gql = (query: string) => query;\n\n/**\n * @returns JSON body for the graphql request.\n */\nexport const graphqlRequestBody = (query: string, variables: Record<string, any> = {}) =>\n HttpBody.json({\n query,\n variables,\n });\n"],
5
- "mappings": "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",
6
- "names": ["FetchHttpClient", "HttpClient", "Array", "Effect", "Function", "Credential", "Operation", "Database", "Filter", "Obj", "Query", "Ref", "withAuthorization", "log", "Person", "Pipeline", "Task", "HttpBody", "graphqlRequestBody", "query", "variables", "json", "queryIssues", "LINEAR_UPDATED_AT_KEY", "Operation", "credential", "Credential", "service", "client", "log", "info", "after", "graphqlRequestBody", "team", "teamId", "json", "count", "syncObjects", "syncComplete", "tasks", "Effect", "FetchHttpClient", "layer", "existingTasks", "Database", "query", "LINEAR_TEAM_ID_KEY", "mapLinearPerson", "person", "Obj", "make", "Person", "nickname", "mapLinearIssue", "issue", "title", "description", "assigned", "assignee", "keys", "name"]
7
- }
@@ -1,138 +0,0 @@
1
- import {
2
- SyncTriggers
3
- } from "./chunk-PBARVBNJ.mjs";
4
- import "./chunk-H4W22FFJ.mjs";
5
- import "./chunk-Z2HFOZXK.mjs";
6
- import "./chunk-EPQCDGIV.mjs";
7
- import "./chunk-J5LGTIGS.mjs";
8
-
9
- // src/skills/agent-wizard/operations/sync-triggers.ts
10
- import * as Effect from "effect/Effect";
11
- import * as Option from "effect/Option";
12
- import { Operation, Trigger } from "@dxos/compute";
13
- import { Database, Feed, Filter, Obj, Ref, Type } from "@dxos/echo";
14
- import { FeedAnnotation } from "@dxos/schema";
15
- var sync_triggers_default = SyncTriggers.pipe(Operation.withHandler(Effect.fn(function* ({ agent: agentRef }) {
16
- const agent = yield* Database.load(agentRef);
17
- yield* syncAgentTriggers(agent);
18
- })));
19
- var AGENT_TRIGGER_EXTENSION_KEY = "org.dxos.extension.AgentTrigger";
20
- var AGENT_TRIGGER_TARGET_EXTENSION_KEY = "org.dxos.extension.AgentTriggerTarget";
21
- var hasFeedAnnotation = (obj) => {
22
- const type = Obj.getType(obj);
23
- if (!type) {
24
- return false;
25
- }
26
- const annotation = FeedAnnotation.get(Type.getSchema(type));
27
- return Option.isSome(annotation) && annotation.value === true;
28
- };
29
- var syncAgentTriggers = (agent) => Effect.gen(function* () {
30
- const triggers = yield* Database.query(Filter.foreignKeys(Trigger.Trigger, [
31
- {
32
- source: AGENT_TRIGGER_EXTENSION_KEY,
33
- id: agent.id
34
- }
35
- ])).run;
36
- for (const trigger of triggers) {
37
- yield* Database.remove(trigger);
38
- }
39
- const triggersEnabled = agent.enabled ?? true;
40
- const { Qualifier, AgentWorker } = yield* Effect.promise(() => import("./definitions-VRR5OGXI.mjs"));
41
- for (const subscription of agent.subscriptions) {
42
- const targetOption = yield* Database.load(subscription).pipe(Effect.map(Option.some), Effect.catchTag("EntityNotFoundError", () => Effect.succeed(Option.none())));
43
- if (Option.isNone(targetOption)) {
44
- continue;
45
- }
46
- const target = targetOption.value;
47
- let feedObj;
48
- if (Obj.instanceOf(Feed.Feed, target)) {
49
- feedObj = target;
50
- } else if (hasFeedAnnotation(target)) {
51
- const feedRef = target.feed;
52
- feedObj = feedRef ? Option.getOrUndefined(yield* Database.load(feedRef).pipe(Effect.map(Option.some), Effect.catchTag("EntityNotFoundError", () => Effect.succeed(Option.none())))) : void 0;
53
- }
54
- if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj) || !Feed.getQueueUri(feedObj)) {
55
- continue;
56
- }
57
- const filterEvents = agent.filterEvents ?? true;
58
- yield* Database.add(Trigger.make({
59
- [Obj.Parent]: agent,
60
- [Obj.Meta]: {
61
- keys: [
62
- {
63
- source: AGENT_TRIGGER_EXTENSION_KEY,
64
- id: agent.id
65
- },
66
- {
67
- source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,
68
- id: subscription.uri
69
- }
70
- ]
71
- },
72
- enabled: triggersEnabled,
73
- spec: Trigger.specFeed(feedObj),
74
- runnable: Ref.make(Operation.serialize(filterEvents ? Qualifier : AgentWorker)),
75
- input: {
76
- agent: Ref.make(agent),
77
- event: "{{event}}"
78
- },
79
- concurrency: filterEvents ? 5 : void 0
80
- }));
81
- }
82
- if ((agent.filterEvents ?? true) && agent.feed) {
83
- const agentFeedOption = yield* Database.load(agent.feed).pipe(Effect.map(Option.some), Effect.catchTag("EntityNotFoundError", () => Effect.succeed(Option.none())));
84
- if (Option.isSome(agentFeedOption) && Feed.getQueueUri(agentFeedOption.value)) {
85
- yield* Database.add(Trigger.make({
86
- [Obj.Parent]: agent,
87
- [Obj.Meta]: {
88
- keys: [
89
- {
90
- source: AGENT_TRIGGER_EXTENSION_KEY,
91
- id: agent.id
92
- },
93
- {
94
- source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,
95
- id: Obj.getURI(agent) ?? ""
96
- }
97
- ]
98
- },
99
- runnable: Ref.make(Operation.serialize(AgentWorker)),
100
- enabled: triggersEnabled,
101
- spec: Trigger.specFeed(agentFeedOption.value),
102
- input: {
103
- agent: Ref.make(agent),
104
- event: "{{event}}"
105
- }
106
- }));
107
- }
108
- }
109
- if (agent.cron) {
110
- yield* Database.add(Trigger.make({
111
- [Obj.Parent]: agent,
112
- [Obj.Meta]: {
113
- keys: [
114
- {
115
- source: AGENT_TRIGGER_EXTENSION_KEY,
116
- id: agent.id
117
- },
118
- {
119
- source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,
120
- id: `timer:${agent.cron}`
121
- }
122
- ]
123
- },
124
- enabled: triggersEnabled,
125
- spec: Trigger.specTimer(agent.cron),
126
- runnable: Ref.make(Operation.serialize(AgentWorker)),
127
- input: {
128
- agent: Ref.make(agent),
129
- event: "{{event}}"
130
- }
131
- }));
132
- }
133
- yield* Database.flush();
134
- });
135
- export {
136
- sync_triggers_default as default
137
- };
138
- //# sourceMappingURL=sync-triggers-YBTLPCUB.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/agent-wizard/operations/sync-triggers.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Operation, Trigger } from '@dxos/compute';\nimport { Database, Feed, Filter, Obj, Ref, Type } from '@dxos/echo';\nimport { FeedAnnotation } from '@dxos/schema';\n\nimport { Agent } from '../../../types';\nimport { SyncTriggers } from './definitions';\n\nexport default SyncTriggers.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ agent: agentRef }) {\n const agent = yield* Database.load(agentRef);\n yield* syncAgentTriggers(agent);\n }),\n ),\n);\n\n/**\n * Foreign key {@link AGENT_TRIGGER_EXTENSION_KEY} => <agent id : EntityId>.\n */\nconst AGENT_TRIGGER_EXTENSION_KEY = 'org.dxos.extension.AgentTrigger';\n\n/**\n * Foreign key {@link AGENT_TRIGGER_TARGET_EXTENSION_KEY} => <dxn string of subscription target>.\n */\nconst AGENT_TRIGGER_TARGET_EXTENSION_KEY = 'org.dxos.extension.AgentTriggerTarget';\n\n/** Checks if an object's schema has the FeedAnnotation. */\nconst hasFeedAnnotation = (obj: Obj.Unknown): boolean => {\n const type = Obj.getType(obj);\n if (!type) {\n return false;\n }\n const annotation = FeedAnnotation.get(Type.getSchema(type));\n return Option.isSome(annotation) && annotation.value === true;\n};\n\n/**\n * Syncs triggers in the database with the agent subscriptions.\n */\nconst syncAgentTriggers = (agent: Agent.Agent): Effect.Effect<void, never, Database.Service> =>\n Effect.gen(function* () {\n const triggers = yield* Database.query(\n Filter.foreignKeys(Trigger.Trigger, [{ source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id }]),\n ).run;\n\n // Remove all existing triggers — they will be recreated with the current config.\n // This ensures operation, concurrency, and enabled stay in sync when agent fields change.\n for (const trigger of triggers) {\n yield* Database.remove(trigger);\n }\n\n const triggersEnabled = agent.enabled ?? true;\n\n // Lazy import to avoid circular dependency issues.\n const { Qualifier, AgentWorker } = yield* Effect.promise(() => import('../../agent/operations/definitions'));\n\n for (const subscription of agent.subscriptions) {\n const targetOption = yield* Database.load(subscription).pipe(\n Effect.map(Option.some),\n Effect.catchTag('EntityNotFoundError', () => Effect.succeed(Option.none())),\n );\n if (Option.isNone(targetOption)) {\n continue;\n }\n const target = targetOption.value;\n\n let feedObj: Feed.Feed | undefined;\n if (Obj.instanceOf(Feed.Feed, target)) {\n feedObj = target;\n } else if (hasFeedAnnotation(target)) {\n const feedRef = (target as Obj.Unknown & { feed?: Ref.Ref<Feed.Feed> }).feed;\n feedObj = feedRef\n ? Option.getOrUndefined(\n yield* Database.load(feedRef).pipe(\n Effect.map(Option.some),\n Effect.catchTag('EntityNotFoundError', () => Effect.succeed(Option.none())),\n ),\n )\n : undefined;\n }\n\n if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj) || !Feed.getQueueUri(feedObj)) {\n continue;\n }\n\n const filterEvents = agent.filterEvents ?? true;\n\n yield* Database.add(\n Trigger.make({\n [Obj.Parent]: agent,\n [Obj.Meta]: {\n keys: [\n { source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id },\n { source: AGENT_TRIGGER_TARGET_EXTENSION_KEY, id: subscription.uri },\n ],\n },\n enabled: triggersEnabled,\n spec: Trigger.specFeed(feedObj),\n runnable: Ref.make(Operation.serialize(filterEvents ? Qualifier : AgentWorker)),\n input: {\n agent: Ref.make(agent),\n event: '{{event}}',\n },\n concurrency: filterEvents ? 5 : undefined,\n }),\n );\n }\n\n if ((agent.filterEvents ?? true) && agent.feed) {\n const agentFeedOption = yield* Database.load(agent.feed).pipe(\n Effect.map(Option.some),\n Effect.catchTag('EntityNotFoundError', () => Effect.succeed(Option.none())),\n );\n if (Option.isSome(agentFeedOption) && Feed.getQueueUri(agentFeedOption.value)) {\n yield* Database.add(\n Trigger.make({\n [Obj.Parent]: agent,\n [Obj.Meta]: {\n keys: [\n { source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id },\n {\n source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,\n id: Obj.getURI(agent) ?? '',\n },\n ],\n },\n runnable: Ref.make(Operation.serialize(AgentWorker)),\n enabled: triggersEnabled,\n spec: Trigger.specFeed(agentFeedOption.value),\n input: {\n agent: Ref.make(agent),\n event: '{{event}}',\n },\n }),\n );\n }\n }\n\n // Timer trigger bypasses the qualifier and invokes the agent worker directly on a schedule.\n if (agent.cron) {\n yield* Database.add(\n Trigger.make({\n [Obj.Parent]: agent,\n [Obj.Meta]: {\n keys: [\n { source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id },\n { source: AGENT_TRIGGER_TARGET_EXTENSION_KEY, id: `timer:${agent.cron}` },\n ],\n },\n enabled: triggersEnabled,\n spec: Trigger.specTimer(agent.cron),\n runnable: Ref.make(Operation.serialize(AgentWorker)),\n input: {\n agent: Ref.make(agent),\n event: '{{event}}',\n },\n }),\n );\n }\n\n yield* Database.flush();\n });\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,WAAWC,eAAe;AACnC,SAASC,UAAUC,MAAMC,QAAQC,KAAKC,KAAKC,YAAY;AACvD,SAASC,sBAAsB;AAK/B,IAAA,wBAAeC,aAAaC,KAC1BC,UAAUC,YACDC,UAAG,WAAW,EAAEC,OAAOC,SAAQ,GAAE;AACtC,QAAMD,QAAQ,OAAOE,SAASC,KAAKF,QAAAA;AACnC,SAAOG,kBAAkBJ,KAAAA;AAC3B,CAAA,CAAA,CAAA;AAOJ,IAAMK,8BAA8B;AAKpC,IAAMC,qCAAqC;AAG3C,IAAMC,oBAAoB,CAACC,QAAAA;AACzB,QAAMC,OAAOC,IAAIC,QAAQH,GAAAA;AACzB,MAAI,CAACC,MAAM;AACT,WAAO;EACT;AACA,QAAMG,aAAaC,eAAeC,IAAIC,KAAKC,UAAUP,IAAAA,CAAAA;AACrD,SAAcQ,cAAOL,UAAAA,KAAeA,WAAWM,UAAU;AAC3D;AAKA,IAAMd,oBAAoB,CAACJ,UAClBmB,WAAI,aAAA;AACT,QAAMC,WAAW,OAAOlB,SAASmB,MAC/BC,OAAOC,YAAYC,QAAQA,SAAS;IAAC;MAAEC,QAAQpB;MAA6BqB,IAAI1B,MAAM0B;IAAG;GAAE,CAAA,EAC3FC;AAIF,aAAWC,WAAWR,UAAU;AAC9B,WAAOlB,SAAS2B,OAAOD,OAAAA;EACzB;AAEA,QAAME,kBAAkB9B,MAAM+B,WAAW;AAGzC,QAAM,EAAEC,WAAWC,YAAW,IAAK,OAAcC,eAAQ,MAAM,OAAO,4BAAA,CAAA;AAEtE,aAAWC,gBAAgBnC,MAAMoC,eAAe;AAC9C,UAAMC,eAAe,OAAOnC,SAASC,KAAKgC,YAAAA,EAAcvC,KAC/C0C,WAAWC,WAAI,GACfC,gBAAS,uBAAuB,MAAaC,eAAeC,YAAI,CAAA,CAAA,CAAA;AAEzE,QAAWC,cAAON,YAAAA,GAAe;AAC/B;IACF;AACA,UAAMO,SAASP,aAAanB;AAE5B,QAAI2B;AACJ,QAAInC,IAAIoC,WAAWC,KAAKA,MAAMH,MAAAA,GAAS;AACrCC,gBAAUD;IACZ,WAAWrC,kBAAkBqC,MAAAA,GAAS;AACpC,YAAMI,UAAWJ,OAAuDK;AACxEJ,gBAAUG,UACCE,sBACL,OAAOhD,SAASC,KAAK6C,OAAAA,EAASpD,KACrB0C,WAAWC,WAAI,GACfC,gBAAS,uBAAuB,MAAaC,eAAeC,YAAI,CAAA,CAAA,CAAA,CACzE,IAEFS;IACN;AAEA,QAAI,CAACN,WAAW,CAACnC,IAAIoC,WAAWC,KAAKA,MAAMF,OAAAA,KAAY,CAACE,KAAKK,YAAYP,OAAAA,GAAU;AACjF;IACF;AAEA,UAAMQ,eAAerD,MAAMqD,gBAAgB;AAE3C,WAAOnD,SAASoD,IACd9B,QAAQ+B,KAAK;MACX,CAAC7C,IAAI8C,MAAM,GAAGxD;MACd,CAACU,IAAI+C,IAAI,GAAG;QACVC,MAAM;UACJ;YAAEjC,QAAQpB;YAA6BqB,IAAI1B,MAAM0B;UAAG;UACpD;YAAED,QAAQnB;YAAoCoB,IAAIS,aAAawB;UAAI;;MAEvE;MACA5B,SAASD;MACT8B,MAAMpC,QAAQqC,SAAShB,OAAAA;MACvBiB,UAAUC,IAAIR,KAAK1D,UAAUmE,UAAUX,eAAerB,YAAYC,WAAAA,CAAAA;MAClEgC,OAAO;QACLjE,OAAO+D,IAAIR,KAAKvD,KAAAA;QAChBkE,OAAO;MACT;MACAC,aAAad,eAAe,IAAIF;IAClC,CAAA,CAAA;EAEJ;AAEA,OAAKnD,MAAMqD,gBAAgB,SAASrD,MAAMiD,MAAM;AAC9C,UAAMmB,kBAAkB,OAAOlE,SAASC,KAAKH,MAAMiD,IAAI,EAAErD,KAChD0C,WAAWC,WAAI,GACfC,gBAAS,uBAAuB,MAAaC,eAAeC,YAAI,CAAA,CAAA,CAAA;AAEzE,QAAWzB,cAAOmD,eAAAA,KAAoBrB,KAAKK,YAAYgB,gBAAgBlD,KAAK,GAAG;AAC7E,aAAOhB,SAASoD,IACd9B,QAAQ+B,KAAK;QACX,CAAC7C,IAAI8C,MAAM,GAAGxD;QACd,CAACU,IAAI+C,IAAI,GAAG;UACVC,MAAM;YACJ;cAAEjC,QAAQpB;cAA6BqB,IAAI1B,MAAM0B;YAAG;YACpD;cACED,QAAQnB;cACRoB,IAAIhB,IAAI2D,OAAOrE,KAAAA,KAAU;YAC3B;;QAEJ;QACA8D,UAAUC,IAAIR,KAAK1D,UAAUmE,UAAU/B,WAAAA,CAAAA;QACvCF,SAASD;QACT8B,MAAMpC,QAAQqC,SAASO,gBAAgBlD,KAAK;QAC5C+C,OAAO;UACLjE,OAAO+D,IAAIR,KAAKvD,KAAAA;UAChBkE,OAAO;QACT;MACF,CAAA,CAAA;IAEJ;EACF;AAGA,MAAIlE,MAAMsE,MAAM;AACd,WAAOpE,SAASoD,IACd9B,QAAQ+B,KAAK;MACX,CAAC7C,IAAI8C,MAAM,GAAGxD;MACd,CAACU,IAAI+C,IAAI,GAAG;QACVC,MAAM;UACJ;YAAEjC,QAAQpB;YAA6BqB,IAAI1B,MAAM0B;UAAG;UACpD;YAAED,QAAQnB;YAAoCoB,IAAI,SAAS1B,MAAMsE,IAAI;UAAG;;MAE5E;MACAvC,SAASD;MACT8B,MAAMpC,QAAQ+C,UAAUvE,MAAMsE,IAAI;MAClCR,UAAUC,IAAIR,KAAK1D,UAAUmE,UAAU/B,WAAAA,CAAAA;MACvCgC,OAAO;QACLjE,OAAO+D,IAAIR,KAAKvD,KAAAA;QAChBkE,OAAO;MACT;IACF,CAAA,CAAA;EAEJ;AAEA,SAAOhE,SAASsE,MAAK;AACvB,CAAA;",
6
- "names": ["Effect", "Option", "Operation", "Trigger", "Database", "Feed", "Filter", "Obj", "Ref", "Type", "FeedAnnotation", "SyncTriggers", "pipe", "Operation", "withHandler", "fn", "agent", "agentRef", "Database", "load", "syncAgentTriggers", "AGENT_TRIGGER_EXTENSION_KEY", "AGENT_TRIGGER_TARGET_EXTENSION_KEY", "hasFeedAnnotation", "obj", "type", "Obj", "getType", "annotation", "FeedAnnotation", "get", "Type", "getSchema", "isSome", "value", "gen", "triggers", "query", "Filter", "foreignKeys", "Trigger", "source", "id", "run", "trigger", "remove", "triggersEnabled", "enabled", "Qualifier", "AgentWorker", "promise", "subscription", "subscriptions", "targetOption", "map", "some", "catchTag", "succeed", "none", "isNone", "target", "feedObj", "instanceOf", "Feed", "feedRef", "feed", "getOrUndefined", "undefined", "getQueueUri", "filterEvents", "add", "make", "Parent", "Meta", "keys", "uri", "spec", "specFeed", "runnable", "Ref", "serialize", "input", "event", "concurrency", "agentFeedOption", "getURI", "cron", "specTimer", "flush"]
7
- }
@@ -1,18 +0,0 @@
1
- import {
2
- TagAdd
3
- } from "./chunk-YQSQRSXG.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/database/operations/tag-add.ts
7
- import * as Effect from "effect/Effect";
8
- import { Operation } from "@dxos/compute";
9
- import { Database, Entity } from "@dxos/echo";
10
- var tag_add_default = TagAdd.pipe(Operation.withHandler(Effect.fn(function* ({ tag, obj }) {
11
- const object = yield* Database.load(obj);
12
- Entity.update(object, (object2) => Entity.addTag(object2, tag));
13
- return Entity.toJSON(object);
14
- })));
15
- export {
16
- tag_add_default as default
17
- };
18
- //# sourceMappingURL=tag-add-L5WNOBYY.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/database/operations/tag-add.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Entity } from '@dxos/echo';\n\nimport { TagAdd } from './definitions';\n\nexport default TagAdd.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ tag, obj }) {\n const object = yield* Database.load(obj);\n Entity.update(object, (object) => Entity.addTag(object, tag));\n return Entity.toJSON(object);\n }),\n ),\n);\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,cAAc;AAIjC,IAAA,kBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAKC,IAAG,GAAE;AAC/B,QAAMC,SAAS,OAAOC,SAASC,KAAKH,GAAAA;AACpCI,SAAOC,OAAOJ,QAAQ,CAACA,YAAWG,OAAOE,OAAOL,SAAQF,GAAAA,CAAAA;AACxD,SAAOK,OAAOG,OAAON,MAAAA;AACvB,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "Operation", "Database", "Entity", "TagAdd", "pipe", "Operation", "withHandler", "fn", "tag", "obj", "object", "Database", "load", "Entity", "update", "addTag", "toJSON"]
7
- }