@dxos/plugin-assistant 0.9.0 → 0.9.1-staging.ee54ba693a

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 (619) hide show
  1. package/PLUGIN.mdl +18 -24
  2. package/dist/lib/neutral/{AgentArticle-K7XM46OQ.mjs → AgentArticle-GV6EEW3I.mjs} +9 -8
  3. package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs.map +7 -0
  4. package/dist/lib/neutral/AssistantPlugin.mjs +1 -1
  5. package/dist/lib/neutral/AssistantPlugin.node.mjs +6 -6
  6. package/dist/lib/neutral/AssistantPlugin.node.mjs.map +3 -3
  7. package/dist/lib/neutral/AssistantPlugin.workerd.mjs +7 -34
  8. package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +4 -4
  9. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs +302 -0
  10. package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs.map +7 -0
  11. package/dist/lib/neutral/{ChatArticle-VNVZCDUR.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
  12. package/dist/lib/neutral/{ChatCompanion-LBUHYWQG.mjs → ChatCompanion-GIFJRY6I.mjs} +28 -28
  13. package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
  14. package/dist/lib/neutral/{ChatDialog-DCA6FLOV.mjs → ChatDialog-5MXN4MXS.mjs} +9 -8
  15. package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs.map +7 -0
  16. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs +72 -0
  17. package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs.map +7 -0
  18. package/dist/lib/neutral/{PlanArticle-TS5ULWYS.mjs → PlanArticle-VPK2IYWU.mjs} +8 -2
  19. package/dist/lib/neutral/PlanArticle-VPK2IYWU.mjs.map +7 -0
  20. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs +114 -0
  21. package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
  22. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
  23. package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
  24. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs +12 -0
  25. package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs.map +7 -0
  26. package/dist/lib/neutral/{TriggerStatus-X7Y5JFZJ.mjs → TriggerStatus-FURRBHYA.mjs} +9 -7
  27. package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
  28. package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
  29. package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
  30. package/dist/lib/neutral/{agent-service-WCAP5MLI.mjs → agent-service-XFJ4VQMT.mjs} +6 -6
  31. package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
  32. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
  33. package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
  34. package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
  35. package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
  36. package/dist/lib/neutral/{app-graph-builder-WUFHQH3Y.mjs → app-graph-builder-OPVOEQY7.mjs} +45 -28
  37. package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
  38. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
  39. package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
  40. package/dist/lib/neutral/capabilities/index.mjs +21 -19
  41. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  42. package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
  43. package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
  44. package/dist/lib/neutral/{chunk-YXRGZYYH.mjs → chunk-6Q4OBGIK.mjs} +87 -59
  45. package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-BXI2R4OO.mjs +410 -0
  47. package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
  48. package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
  49. package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
  51. package/dist/lib/neutral/{chunk-SMFJD7BP.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
  52. package/dist/lib/neutral/chunk-HKLSFB5I.mjs +90 -0
  53. package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-L7AR4VTA.mjs +53 -0
  55. package/dist/lib/neutral/chunk-L7AR4VTA.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
  57. package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
  58. package/dist/lib/neutral/{chunk-HLANPOBA.mjs → chunk-OZWZGIV2.mjs} +5 -3
  59. package/dist/lib/neutral/chunk-OZWZGIV2.mjs.map +7 -0
  60. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
  61. package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
  62. package/dist/lib/neutral/{TracePanel-KTZJ6JNR.mjs → chunk-SCTHQVIJ.mjs} +11 -23
  63. package/dist/lib/neutral/chunk-SCTHQVIJ.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
  65. package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
  66. package/dist/lib/neutral/{chunk-RKVVK3R3.mjs → chunk-UPKFUZ6V.mjs} +22 -17
  67. package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
  68. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
  69. package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
  70. package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
  71. package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
  72. package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
  73. package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
  74. package/dist/lib/neutral/components/index.mjs +749 -632
  75. package/dist/lib/neutral/components/index.mjs.map +4 -4
  76. package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
  77. package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
  78. package/dist/lib/neutral/containers/index.mjs +15 -13
  79. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  80. package/dist/lib/neutral/{create-chat-SGGQ6HVN.mjs → create-chat-YGVZZYGP.mjs} +18 -16
  81. package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
  82. package/dist/lib/neutral/{create-object-U2SOFZLR.mjs → create-object-5PAEJ6KM.mjs} +11 -27
  83. package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
  84. package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
  85. package/dist/lib/neutral/execution-graph/index.mjs +336 -62
  86. package/dist/lib/neutral/execution-graph/index.mjs.map +4 -4
  87. package/dist/lib/neutral/extensions/index.mjs +8 -0
  88. package/dist/lib/neutral/{fork-chat-34KEF4ZJ.mjs → fork-chat-RMAAYYQF.mjs} +16 -19
  89. package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
  90. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
  91. package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
  92. package/dist/lib/neutral/hooks/index.mjs +393 -508
  93. package/dist/lib/neutral/hooks/index.mjs.map +4 -4
  94. package/dist/lib/neutral/index.mjs +14 -10
  95. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
  96. package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
  97. package/dist/lib/neutral/meta.json +1 -1
  98. package/dist/lib/neutral/meta.mjs +1 -1
  99. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
  100. package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
  101. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
  102. package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
  103. package/dist/lib/neutral/operations/index.mjs +1 -1
  104. package/dist/lib/neutral/plugin.mjs +2 -2
  105. package/dist/lib/neutral/plugin.workerd.mjs +13 -0
  106. package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
  107. package/dist/lib/neutral/{react-surface-XRTBW5OJ.mjs → react-surface-HEJEK44F.mjs} +42 -45
  108. package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
  109. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
  110. package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
  111. package/dist/lib/neutral/{run-prompt-in-new-chat-D5IIE2C7.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +31 -31
  112. package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
  113. package/dist/lib/neutral/{settings-W4BLWQ53.mjs → settings-7Q3RITIT.mjs} +3 -3
  114. package/dist/lib/neutral/{settings-W4BLWQ53.mjs.map → settings-7Q3RITIT.mjs.map} +3 -3
  115. package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
  116. package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
  117. package/dist/lib/neutral/skills/index.mjs +8 -0
  118. package/dist/lib/neutral/skills/index.mjs.map +7 -0
  119. package/dist/lib/neutral/{state-H3G7QCU6.mjs → state-4LGAKSSD.mjs} +9 -3
  120. package/dist/lib/neutral/state-4LGAKSSD.mjs.map +7 -0
  121. package/dist/lib/neutral/testing.mjs +1 -1
  122. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
  123. package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
  124. package/dist/lib/neutral/translations.mjs +69 -31
  125. package/dist/lib/neutral/translations.mjs.map +3 -3
  126. package/dist/lib/neutral/types/index.mjs +5 -1
  127. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
  128. package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
  129. package/dist/types/dx.config.d.ts +28 -0
  130. package/dist/types/dx.config.d.ts.map +1 -0
  131. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  132. package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
  134. package/dist/types/src/capabilities/agent-service.d.ts +1 -2
  135. package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
  136. package/dist/types/src/capabilities/ai-context.d.ts +1 -2
  137. package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
  138. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
  139. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
  141. package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
  143. package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
  145. package/dist/types/src/capabilities/connector.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/create-object.d.ts +1 -27
  147. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/index.d.ts +18 -57
  149. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  151. package/dist/types/src/capabilities/migrations.d.ts +1 -2
  152. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
  154. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  156. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  157. package/dist/types/src/capabilities/settings.d.ts +1 -2
  158. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  159. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  160. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/state.d.ts +1 -17
  162. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/toolkit.d.ts +1 -2
  164. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  165. package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/Chat/Chat.d.ts +10 -8
  167. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  168. package/dist/types/src/components/Chat/Chat.stories.d.ts +32 -0
  169. package/dist/types/src/components/Chat/Chat.stories.d.ts.map +1 -0
  170. package/dist/types/src/components/Chat/events.d.ts +0 -4
  171. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  172. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
  173. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  174. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  175. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
  176. package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
  178. package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
  179. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
  180. package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
  181. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
  182. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  183. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
  184. package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
  186. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +2 -2
  187. package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
  188. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
  189. package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
  190. package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
  191. package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
  192. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +6 -0
  193. package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
  194. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +1 -0
  195. package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
  196. package/dist/types/src/components/TaskList/TaskList.d.ts +8 -0
  197. package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -1
  198. package/dist/types/src/components/TaskList/TaskList.stories.d.ts +5 -2
  199. package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
  200. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
  201. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  202. package/dist/types/src/components/index.d.ts +1 -4
  203. package/dist/types/src/components/index.d.ts.map +1 -1
  204. package/dist/types/src/constants.d.ts +1 -1
  205. package/dist/types/src/constants.d.ts.map +1 -1
  206. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
  207. package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
  208. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
  209. package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
  210. package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
  211. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
  212. package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
  213. package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
  214. package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
  215. package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
  216. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +3 -10
  217. package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
  218. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +4 -11
  219. package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
  220. package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
  221. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
  222. package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
  223. package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
  224. package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
  225. package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -1
  226. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts +15 -0
  227. package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -0
  228. package/dist/types/src/containers/SpaceHomePrompt/index.d.ts +2 -0
  229. package/dist/types/src/containers/SpaceHomePrompt/index.d.ts.map +1 -0
  230. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +13 -0
  231. package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -0
  232. package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts +2 -0
  233. package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts.map +1 -0
  234. package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
  235. package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
  236. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
  237. package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
  238. package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
  239. package/dist/types/src/containers/index.d.ts +4 -3
  240. package/dist/types/src/containers/index.d.ts.map +1 -1
  241. package/dist/types/src/execution-graph/execution-graph.d.ts +20 -1
  242. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
  243. package/dist/types/src/execution-graph/index.d.ts +3 -2
  244. package/dist/types/src/execution-graph/index.d.ts.map +1 -1
  245. package/dist/types/src/execution-graph/pending-block-status.d.ts +26 -0
  246. package/dist/types/src/execution-graph/pending-block-status.d.ts.map +1 -0
  247. package/dist/types/src/execution-graph/pending-block-status.test.d.ts +2 -0
  248. package/dist/types/src/execution-graph/pending-block-status.test.d.ts.map +1 -0
  249. package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
  250. package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
  251. package/dist/types/src/extensions/index.d.ts +1 -1
  252. package/dist/types/src/extensions/index.d.ts.map +1 -1
  253. package/dist/types/src/extensions/prompt-extension.d.ts +1 -1
  254. package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
  255. package/dist/types/src/feed-logger.d.ts +3 -2
  256. package/dist/types/src/feed-logger.d.ts.map +1 -1
  257. package/dist/types/src/hooks/index.d.ts +4 -2
  258. package/dist/types/src/hooks/index.d.ts.map +1 -1
  259. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  260. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  261. package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
  262. package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
  263. package/dist/types/src/hooks/usePresets.d.ts +6 -2
  264. package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
  265. package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts +10 -0
  266. package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts.map +1 -0
  267. package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
  268. package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
  269. package/dist/types/src/hooks/useTraceMessages.d.ts +12 -0
  270. package/dist/types/src/hooks/useTraceMessages.d.ts.map +1 -0
  271. package/dist/types/src/index.d.ts +1 -1
  272. package/dist/types/src/index.d.ts.map +1 -1
  273. package/dist/types/src/meta.d.ts +32 -2
  274. package/dist/types/src/meta.d.ts.map +1 -1
  275. package/dist/types/src/operations/create-chat.d.ts.map +1 -1
  276. package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
  277. package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
  278. package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
  279. package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
  280. package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
  281. package/dist/types/src/operations/index.d.ts.map +1 -1
  282. package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
  283. package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
  284. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
  285. package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
  286. package/dist/types/src/paths.d.ts +1 -1
  287. package/dist/types/src/paths.d.ts.map +1 -1
  288. package/dist/types/src/plugin.workerd.d.ts +2 -0
  289. package/dist/types/src/plugin.workerd.d.ts.map +1 -0
  290. package/dist/types/src/processor/presets.d.ts +20 -9
  291. package/dist/types/src/processor/presets.d.ts.map +1 -1
  292. package/dist/types/src/processor/processor.d.ts +33 -209
  293. package/dist/types/src/processor/processor.d.ts.map +1 -1
  294. package/dist/types/src/skills/assistant/index.d.ts +2 -0
  295. package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
  296. package/dist/types/src/skills/assistant/skill.d.ts +4 -0
  297. package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
  298. package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
  299. package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
  300. package/dist/types/src/skills/index.d.ts.map +1 -0
  301. package/dist/types/src/templates/daily-digest.d.ts +2 -2
  302. package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
  303. package/dist/types/src/templates/index.d.ts +3 -3
  304. package/dist/types/src/templates/index.d.ts.map +1 -1
  305. package/dist/types/src/templates/research-brief.d.ts +2 -2
  306. package/dist/types/src/templates/research-brief.d.ts.map +1 -1
  307. package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
  308. package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
  309. package/dist/types/src/templates/scaffold.d.ts +9 -9
  310. package/dist/types/src/templates/scaffold.d.ts.map +1 -1
  311. package/dist/types/src/testing/test-generator.d.ts +1 -1
  312. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  313. package/dist/types/src/testing/test-sequence.d.ts +1 -8
  314. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  315. package/dist/types/src/testing/test-trace.d.ts.map +1 -1
  316. package/dist/types/src/translations.d.ts.map +1 -1
  317. package/dist/types/src/types/Assistant.d.ts +5 -12
  318. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  319. package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
  320. package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
  321. package/dist/types/src/types/AssistantEvents.d.ts.map +1 -1
  322. package/dist/types/src/types/AssistantOperation.d.ts +17 -110
  323. package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
  324. package/dist/types/src/types/ChatSurface.d.ts +12 -0
  325. package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
  326. package/dist/types/src/types/Ollama.d.ts +44 -0
  327. package/dist/types/src/types/Ollama.d.ts.map +1 -0
  328. package/dist/types/src/types/Settings.d.ts +5 -4
  329. package/dist/types/src/types/Settings.d.ts.map +1 -1
  330. package/dist/types/src/types/index.d.ts +2 -0
  331. package/dist/types/src/types/index.d.ts.map +1 -1
  332. package/dist/types/src/types/service.d.ts +4 -3
  333. package/dist/types/src/types/service.d.ts.map +1 -1
  334. package/dist/types/src/util/error-cause.d.ts +3 -0
  335. package/dist/types/src/util/error-cause.d.ts.map +1 -0
  336. package/dist/types/src/util/suggestions.d.ts +1 -1
  337. package/dist/types/tsconfig.tsbuildinfo +1 -1
  338. package/dx.config.ts +38 -0
  339. package/package.json +103 -90
  340. package/src/AssistantPlugin.conversations.json +1 -1
  341. package/src/AssistantPlugin.node.ts +5 -5
  342. package/src/AssistantPlugin.test.ts +27 -41
  343. package/src/AssistantPlugin.ts +14 -12
  344. package/src/AssistantPlugin.workerd.ts +15 -6
  345. package/src/capabilities/agent-hydrator.ts +1 -2
  346. package/src/capabilities/agent-service.ts +7 -5
  347. package/src/capabilities/ai-context.ts +7 -32
  348. package/src/capabilities/ai-service.ts +3 -2
  349. package/src/capabilities/app-graph-builder.ts +43 -28
  350. package/src/capabilities/automation-templates.ts +3 -3
  351. package/src/capabilities/companion-chat-provisioner.ts +22 -6
  352. package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
  353. package/src/capabilities/create-object.ts +9 -26
  354. package/src/capabilities/index.ts +4 -12
  355. package/src/capabilities/markdown-extension.ts +7 -4
  356. package/src/capabilities/navigation-resolver.ts +20 -0
  357. package/src/capabilities/react-surface.tsx +55 -52
  358. package/src/capabilities/settings.ts +2 -2
  359. package/src/capabilities/skill-definition.ts +72 -0
  360. package/src/capabilities/state.ts +8 -1
  361. package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
  362. package/src/components/AgentProperties/AgentProperties.tsx +1 -1
  363. package/src/components/Chat/Chat.stories.tsx +94 -0
  364. package/src/components/Chat/Chat.tsx +67 -16
  365. package/src/components/Chat/events.ts +0 -6
  366. package/src/components/ChatPrompt/ChatActions.tsx +185 -20
  367. package/src/components/ChatPrompt/ChatMcpErrors.tsx +1 -1
  368. package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
  369. package/src/components/ChatPrompt/ChatOptions.tsx +43 -50
  370. package/src/components/ChatPrompt/ChatPrompt.tsx +31 -47
  371. package/src/components/ChatPrompt/ChatReferences.tsx +1 -1
  372. package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
  373. package/src/components/ChatThread/Anchor.stories.tsx +1 -1
  374. package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
  375. package/src/components/ChatThread/DEBUG.md +23 -0
  376. package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
  377. package/src/components/ChatThread/registry.tsx +43 -17
  378. package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
  379. package/src/components/ChatThread/widgets/SummaryWidget.tsx +1 -1
  380. package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
  381. package/src/components/ChatThread/widgets/ToolWidget.tsx +1 -1
  382. package/src/components/ChatThread/widgets/index.ts +1 -0
  383. package/src/components/ProcessTree/ProcessTree.stories.tsx +7 -0
  384. package/src/components/ProcessTree/ProcessTree.tsx +183 -88
  385. package/src/components/TaskList/TaskList.stories.tsx +24 -3
  386. package/src/components/TaskList/TaskList.tsx +122 -28
  387. package/src/components/ToolBlock/ToolBlock.tsx +1 -1
  388. package/src/components/Toolbox/Toolbox.tsx +11 -11
  389. package/src/components/index.ts +1 -6
  390. package/src/constants.ts +1 -1
  391. package/src/containers/AgentArticle/AgentArticle.stories.tsx +12 -13
  392. package/src/containers/AgentArticle/AgentArticle.tsx +10 -10
  393. package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
  394. package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
  395. package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
  396. package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
  397. package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
  398. package/src/containers/ChatArticle/ChatArticle.tsx +25 -28
  399. package/src/containers/ChatCompanion/ChatCompanion.tsx +27 -27
  400. package/src/containers/ChatDialog/ChatDialog.tsx +10 -7
  401. package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
  402. package/src/containers/IntegrationPrompt/index.ts +5 -0
  403. package/src/containers/PlanArticle/PlanArticle.tsx +5 -1
  404. package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +107 -0
  405. package/src/containers/SpaceHomePrompt/index.ts +5 -0
  406. package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +83 -0
  407. package/src/containers/SpaceHomeSuggestions/index.ts +5 -0
  408. package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
  409. package/src/containers/TracePanel/TracePanel.tsx +15 -37
  410. package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
  411. package/src/containers/TriggerStatus/TriggerStatus.tsx +10 -6
  412. package/src/containers/index.ts +4 -3
  413. package/src/execution-graph/SPEC.md +1 -1
  414. package/src/execution-graph/execution-graph.test.ts +213 -25
  415. package/src/execution-graph/execution-graph.ts +337 -70
  416. package/src/execution-graph/index.ts +15 -5
  417. package/src/execution-graph/pending-block-status.test.ts +114 -0
  418. package/src/execution-graph/pending-block-status.ts +88 -0
  419. package/src/execution-graph/span-tree.test.ts +33 -1
  420. package/src/execution-graph/span-tree.ts +43 -2
  421. package/src/execution-graph/sub-agent-delegation.test.ts +34 -19
  422. package/src/extensions/index.ts +1 -1
  423. package/src/extensions/prompt-extension.ts +102 -73
  424. package/src/feed-logger.ts +24 -22
  425. package/src/functions/services.test.ts +4 -4
  426. package/src/hooks/index.ts +4 -2
  427. package/src/hooks/useChatProcessor.ts +12 -16
  428. package/src/hooks/useChatServices.ts +2 -2
  429. package/src/hooks/useChatToolbarActions.ts +5 -5
  430. package/src/hooks/useContextBinder.ts +2 -4
  431. package/src/hooks/useDebug.ts +2 -2
  432. package/src/hooks/useHomeSuggestions.ts +55 -0
  433. package/src/hooks/usePresets.ts +80 -11
  434. package/src/hooks/useProcessEphemeralStatus.ts +192 -0
  435. package/src/hooks/useReferencesProvider.ts +1 -1
  436. package/src/hooks/useSkillRegistry.ts +125 -0
  437. package/src/hooks/useTraceMessages.ts +41 -0
  438. package/src/index.ts +1 -1
  439. package/src/meta.ts +3 -31
  440. package/src/operations/create-chat.ts +11 -12
  441. package/src/operations/fork-chat.ts +15 -20
  442. package/src/operations/generate-home-suggestions.test.ts +103 -0
  443. package/src/operations/generate-home-suggestions.ts +116 -0
  444. package/src/operations/index.ts +1 -0
  445. package/src/operations/prompt.node.test.ts +14 -17
  446. package/src/operations/resolve-navigation-targets.ts +32 -19
  447. package/src/operations/run-prompt-in-new-chat.ts +34 -35
  448. package/src/operations/update-chat-name.ts +2 -2
  449. package/src/paths.ts +5 -3
  450. package/src/plugin.workerd.ts +5 -0
  451. package/src/processor/presets.ts +38 -61
  452. package/src/processor/processor.node.test.ts +72 -2
  453. package/src/processor/processor.ts +91 -21
  454. package/src/skills/assistant/index.ts +5 -0
  455. package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
  456. package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
  457. package/src/templates/daily-digest.ts +10 -12
  458. package/src/templates/index.ts +3 -3
  459. package/src/templates/research-brief.ts +15 -13
  460. package/src/templates/routine-templates.test.ts +55 -0
  461. package/src/templates/scaffold.ts +22 -57
  462. package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
  463. package/src/testing/data/trace-timeline-remote.dx.json +1 -1
  464. package/src/testing/data/trace-timeline.dx.json +3430 -1093
  465. package/src/testing/test-generator.test.ts +26 -22
  466. package/src/testing/test-generator.ts +4 -8
  467. package/src/testing/test-trace.ts +2 -1
  468. package/src/testing/trace-timeline.node.test.ts +14 -14
  469. package/src/translations.ts +74 -31
  470. package/src/types/Assistant.ts +3 -1
  471. package/src/types/AssistantCapabilities.ts +24 -3
  472. package/src/types/AssistantEvents.ts +1 -1
  473. package/src/types/AssistantOperation.ts +22 -33
  474. package/src/types/ChatSurface.ts +16 -0
  475. package/src/types/Ollama.ts +59 -0
  476. package/src/types/Settings.ts +12 -10
  477. package/src/types/index.ts +3 -0
  478. package/src/types/service.ts +14 -14
  479. package/src/util/error-cause.ts +21 -0
  480. package/src/util/suggestions.ts +1 -1
  481. package/dist/lib/neutral/AgentArticle-K7XM46OQ.mjs.map +0 -7
  482. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +0 -40
  483. package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +0 -7
  484. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
  485. package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
  486. package/dist/lib/neutral/ChatCompanion-LBUHYWQG.mjs.map +0 -7
  487. package/dist/lib/neutral/ChatDialog-DCA6FLOV.mjs.map +0 -7
  488. package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +0 -7
  489. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs +0 -119
  490. package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs.map +0 -7
  491. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
  492. package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
  493. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
  494. package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
  495. package/dist/lib/neutral/TracePanel-KTZJ6JNR.mjs.map +0 -7
  496. package/dist/lib/neutral/TriggerStatus-X7Y5JFZJ.mjs.map +0 -7
  497. package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
  498. package/dist/lib/neutral/agent-service-WCAP5MLI.mjs.map +0 -7
  499. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
  500. package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
  501. package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
  502. package/dist/lib/neutral/app-graph-builder-WUFHQH3Y.mjs.map +0 -7
  503. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
  504. package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
  505. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs +0 -39
  506. package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs.map +0 -7
  507. package/dist/lib/neutral/blueprints/index.mjs +0 -8
  508. package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
  509. package/dist/lib/neutral/chunk-HLANPOBA.mjs.map +0 -7
  510. package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
  511. package/dist/lib/neutral/chunk-QAZMOFPI.mjs +0 -130
  512. package/dist/lib/neutral/chunk-QAZMOFPI.mjs.map +0 -7
  513. package/dist/lib/neutral/chunk-RKVVK3R3.mjs.map +0 -7
  514. package/dist/lib/neutral/chunk-SMFJD7BP.mjs +0 -8
  515. package/dist/lib/neutral/chunk-XYHPOGTK.mjs +0 -43
  516. package/dist/lib/neutral/chunk-XYHPOGTK.mjs.map +0 -7
  517. package/dist/lib/neutral/chunk-YXRGZYYH.mjs.map +0 -7
  518. package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
  519. package/dist/lib/neutral/create-chat-SGGQ6HVN.mjs.map +0 -7
  520. package/dist/lib/neutral/create-object-U2SOFZLR.mjs.map +0 -7
  521. package/dist/lib/neutral/fork-chat-34KEF4ZJ.mjs.map +0 -7
  522. package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
  523. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs +0 -110
  524. package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs.map +0 -7
  525. package/dist/lib/neutral/react-surface-XRTBW5OJ.mjs.map +0 -7
  526. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
  527. package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
  528. package/dist/lib/neutral/run-prompt-in-new-chat-D5IIE2C7.mjs.map +0 -7
  529. package/dist/lib/neutral/state-H3G7QCU6.mjs.map +0 -7
  530. package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
  531. package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
  532. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
  533. package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
  534. package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
  535. package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
  536. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  537. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  538. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  539. package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
  540. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
  541. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
  542. package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
  543. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
  544. package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
  545. package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
  546. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
  547. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
  548. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
  549. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
  550. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
  551. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
  552. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
  553. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
  554. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
  555. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
  556. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
  557. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
  558. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
  559. package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
  560. package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
  561. package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
  562. package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
  563. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
  564. package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
  565. package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
  566. package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
  567. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
  568. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
  569. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
  570. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
  571. package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
  572. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
  573. package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
  574. package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
  575. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
  576. package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
  577. package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
  578. package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
  579. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
  580. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
  581. package/dist/types/src/hooks/useOnline.d.ts +0 -3
  582. package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
  583. package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
  584. package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
  585. package/src/blueprints/assistant/index.ts +0 -5
  586. package/src/capabilities/blueprint-definition.ts +0 -65
  587. package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
  588. package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
  589. package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
  590. package/src/components/RoutineProperties/index.ts +0 -5
  591. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
  592. package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
  593. package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
  594. package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
  595. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
  596. package/src/components/TemplateEditor/extensions/index.ts +0 -6
  597. package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
  598. package/src/components/TemplateEditor/index.ts +0 -5
  599. package/src/components/TemplateEditor/types.tsx +0 -28
  600. package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
  601. package/src/containers/BlueprintArticle/index.ts +0 -5
  602. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
  603. package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
  604. package/src/containers/RoutineArticle/index.ts +0 -5
  605. package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
  606. package/src/containers/RoutineList/RoutineList.tsx +0 -50
  607. package/src/containers/RoutineList/index.ts +0 -5
  608. package/src/hooks/useBlueprintRegistry.ts +0 -125
  609. package/src/hooks/useOnline.ts +0 -10
  610. package/src/templates/automation-templates.test.ts +0 -66
  611. package/src/testing/trace-timeline.node.conversations.json +0 -1
  612. /package/dist/lib/neutral/{ChatArticle-VNVZCDUR.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
  613. /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
  614. /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
  615. /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
  616. /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
  617. /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
  618. /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
  619. /package/src/{blueprints → skills}/index.ts +0 -0
@@ -12,27 +12,31 @@ import * as Layer from 'effect/Layer';
12
12
  import * as Option from 'effect/Option';
13
13
  import * as Stream from 'effect/Stream';
14
14
 
15
- import { type AiService, DEFAULT_EDGE_MODEL, type ModelName, type ModelRegistry, type OpaqueToolkit } from '@dxos/ai';
15
+ import { type AiService, Model, type OpaqueToolkit } from '@dxos/ai';
16
16
  import { Capabilities } from '@dxos/app-framework';
17
17
  import {
18
18
  AiContext,
19
19
  AiSession,
20
- createSystemPrompt,
21
- formatSystemPrompt,
20
+ Harness,
22
21
  McpServerError,
23
22
  PartialBlock,
24
23
  ToolExecutionServices,
24
+ createSystemPrompt,
25
+ formatSystemPrompt,
25
26
  } from '@dxos/assistant';
26
27
  import { type Chat } from '@dxos/assistant-toolkit';
27
- import { type Credential, Operation, type ServiceNotAvailableError, Trace } from '@dxos/compute';
28
+ import { AgentService, type Credential, Operation, type ServiceNotAvailableError, Trace } from '@dxos/compute';
28
29
  import { type Database, Feed, Obj, Ref, type Registry } from '@dxos/echo';
30
+ import { UsageQuotaExceededError } from '@dxos/edge-client';
29
31
  import { EffectEx } from '@dxos/effect';
30
- import { AgentService } from '@dxos/functions-runtime';
32
+ import { DXN } from '@dxos/keys';
31
33
  import { log } from '@dxos/log';
32
34
  import { Message } from '@dxos/types';
33
35
 
34
36
  import { AssistantOperation } from '#types';
35
37
 
38
+ import { findInCause } from '../util/error-cause';
39
+
36
40
  /**
37
41
  * @deprecated Services type for the old direct-conversation processor path.
38
42
  * Retained for backward compatibility with CLI and update-name.
@@ -50,7 +54,6 @@ export type AiChatServices =
50
54
  */
51
55
  export type SpaceServices =
52
56
  | Database.Service
53
- | Feed.FeedService
54
57
  | Credential.CredentialsService
55
58
  | AiService.AiService
56
59
  | AgentService.AgentService
@@ -58,8 +61,11 @@ export type SpaceServices =
58
61
  | OpaqueToolkit.OpaqueToolkitProvider;
59
62
 
60
63
  export type AiChatProcessorOptions = {
61
- model?: ModelName;
62
- modelRegistry?: ModelRegistry;
64
+ model?: DXN.DXN;
65
+ // The selected provider, carried with the model so the agent process resolves the (provider, id)
66
+ // pair — the catalog's shared model ids are ambiguous without it.
67
+ provider?: DXN.DXN;
68
+ modelRegistry?: Model.Registry;
63
69
  registry?: Registry.Registry;
64
70
  observableRegistry?: AtomRegistry.Registry;
65
71
  /**
@@ -70,7 +76,7 @@ export type AiChatProcessorOptions = {
70
76
  };
71
77
 
72
78
  const defaultOptions: Partial<AiChatProcessorOptions> = {
73
- model: DEFAULT_EDGE_MODEL,
79
+ model: Model.DEFAULT_EDGE,
74
80
  };
75
81
 
76
82
  export type ProcessorRequestOptions = {};
@@ -80,14 +86,57 @@ export type ProcessorRequest = {
80
86
  options?: ProcessorRequestOptions;
81
87
  };
82
88
 
89
+ /** User-facing message shown when an AI request is rejected for exceeding the account usage quota (HTTP 429). */
90
+ const QUOTA_EXCEEDED_MESSAGE = 'You have reached your AI usage limit for this period.';
91
+
92
+ /** An actionable next-step a chat error surfaces in its toast; the label key is resolved by the chat UI. */
93
+ export type ChatErrorAction = { readonly labelKey: string };
94
+
95
+ /**
96
+ * Display error for an over-quota (HTTP 429) rejection. Declares an {@link action} so the chat toast can
97
+ * offer a usage-dashboard link declaratively — the UI renders whatever action an error declares rather
98
+ * than branching on the error type.
99
+ */
100
+ export class AiUsageQuotaError extends Error {
101
+ readonly action: ChatErrorAction = { labelKey: 'view-usage.label' };
102
+ }
103
+
104
+ /**
105
+ * Matches an over-quota rejection (EDGE responds 429) in error text. The typed
106
+ * {@link UsageQuotaExceededError} is wrapped deep in the cause chain and does not survive the
107
+ * agent-process boundary — the failure is rendered to a string via `Cause.pretty`, which drops
108
+ * nested causes — so detection also relies on the HTTP 429 that `@effect/ai`'s
109
+ * {@link AiError.HttpResponseError} embeds in its message (e.g. "... (429 POST ...").
110
+ */
111
+ const QUOTA_PATTERN = /\b429\b|rate.?limit|too many requests|usage quota|quota exceeded/i;
112
+
113
+ /** Whether an error denotes an over-quota (HTTP 429) rejection, detected by typed status or message text. */
114
+ const isQuotaError = (err: unknown): boolean => {
115
+ if (AiError.isAiError(err)) {
116
+ if (err._tag === 'HttpResponseError' && err.response.status === 429) {
117
+ return true;
118
+ }
119
+ return QUOTA_PATTERN.test(err.description ?? err.message);
120
+ }
121
+ return typeof err === 'string' && QUOTA_PATTERN.test(err);
122
+ };
123
+
83
124
  /**
84
125
  * Maps a failure from the agent fiber to an error suitable for display.
85
- * {@link AiError}s originate from the AI service and are actionable by the user
126
+ * An over-quota (HTTP 429) rejection is surfaced as an actionable usage-limit message; the typed
127
+ * {@link UsageQuotaExceededError} only survives on the direct path, so {@link isQuotaError} also
128
+ * recognizes the stringified 429 the chat receives across the agent-process boundary.
129
+ * Other {@link AiError}s originate from the AI service and are actionable by the user
86
130
  * (e.g., "model 'x' not found", "Connection refused"), so their detail is propagated.
87
131
  * Any other failure is treated as an internal/unexpected error and reported generically
88
132
  * to avoid leaking implementation detail.
89
133
  */
90
- const parseError = (err: unknown): Error => {
134
+ export const parseError = (err: unknown): Error => {
135
+ const quotaError = findInCause(err, UsageQuotaExceededError.is);
136
+ if (quotaError || isQuotaError(err)) {
137
+ return new AiUsageQuotaError(quotaError?.message?.trim() || QUOTA_EXCEEDED_MESSAGE, { cause: err });
138
+ }
139
+
91
140
  let message: string | undefined;
92
141
  if (AiError.isAiError(err)) {
93
142
  message = err.description?.trim() || err.message;
@@ -170,7 +219,7 @@ export class AiChatProcessor {
170
219
  }
171
220
  }
172
221
 
173
- get context() {
222
+ get context(): AiContext.Binder {
174
223
  return this._conversation.context;
175
224
  }
176
225
 
@@ -195,14 +244,18 @@ export class AiChatProcessor {
195
244
  async getSystemPrompt(): Promise<string> {
196
245
  return this._runtime.runPromise(
197
246
  Effect.gen(this, function* () {
198
- const blueprints = this.context.getBlueprints();
247
+ const skills = this.context.getSkills();
199
248
  const objects = this.context.getObjects();
200
- return yield* formatSystemPrompt({ system: this._options.system, blueprints, objects });
201
- }).pipe(
202
- Effect.provideService(AiContext.Service, { binder: this.context }),
203
- Effect.provide(this._spaceLayer),
204
- Effect.orDie,
205
- ),
249
+ // Tier A only: system-prompt formatting runs operations that read the conversation context;
250
+ // the live-host Tier B control surface is not reachable from this fiber.
251
+ const runtime = yield* Effect.runtime<Database.Service>();
252
+ return yield* formatSystemPrompt({ system: this._options.system, skills, objects }).pipe(
253
+ Effect.provideService(
254
+ Harness.HarnessService,
255
+ Harness.fromBinder({ feed: this._feed, runtime, binder: this.context }),
256
+ ),
257
+ );
258
+ }).pipe(Effect.provide(this._spaceLayer), Effect.orDie),
206
259
  );
207
260
  }
208
261
 
@@ -222,8 +275,15 @@ export class AiChatProcessor {
222
275
 
223
276
  const effect = Effect.gen(this, function* () {
224
277
  // NOTE: Gets or creates a session for the feed.
225
- log.info('init agent session', { feed: Obj.getURI(this._feed), model: this._options.model });
226
- const session = yield* AgentService.getSession(this._feed, { model: this._options.model });
278
+ log.info('init agent session', {
279
+ feed: Obj.getURI(this._feed),
280
+ model: this._options.model,
281
+ provider: this._options.provider,
282
+ });
283
+ const session = yield* AgentService.getSession(this._feed, {
284
+ model: this._options.model,
285
+ provider: this._options.provider,
286
+ });
227
287
  const ephemeralStream = session.subscribeEphemeral();
228
288
  yield* ephemeralStream.pipe(
229
289
  Stream.runForEach((message) =>
@@ -263,6 +323,7 @@ export class AiChatProcessor {
263
323
  const exit = await this._runtime.runPromise(Fiber.await(this.#requestFiber));
264
324
  if (Exit.isFailure(exit)) {
265
325
  if (Cause.isInterruptedOnly(exit.cause)) {
326
+ this.#discardStreaming();
266
327
  return;
267
328
  }
268
329
 
@@ -300,6 +361,7 @@ export class AiChatProcessor {
300
361
  );
301
362
 
302
363
  this.#requestFiber = undefined;
364
+ this.#discardStreaming();
303
365
  this.#registry.set(this.active, false);
304
366
  }
305
367
 
@@ -390,6 +452,14 @@ export class AiChatProcessor {
390
452
  });
391
453
  }
392
454
 
455
+ /**
456
+ * Drop in-flight streaming messages (cancel/interrupt — partial blocks are discarded).
457
+ */
458
+ #discardStreaming() {
459
+ this.#registry.set(this.#streaming, []);
460
+ this.#finalizedIds.clear();
461
+ }
462
+
393
463
  /**
394
464
  * Move remaining streaming messages to pending (called when agent completes).
395
465
  */
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export { default as AssistantSkill } from './skill';
@@ -5,8 +5,8 @@
5
5
  import { describe, it } from '@effect/vitest';
6
6
  import * as Effect from 'effect/Effect';
7
7
 
8
- import { DatabaseBlueprint, DatabaseHandlers } from '@dxos/assistant-toolkit';
9
- import { Blueprint } from '@dxos/compute';
8
+ import { DatabaseHandlers, DatabaseSkill } from '@dxos/assistant-toolkit';
9
+ import { Skill } from '@dxos/compute';
10
10
  import { Feed } from '@dxos/echo';
11
11
  import { TestHelpers } from '@dxos/effect/testing';
12
12
  import { AgentService } from '@dxos/functions-runtime';
@@ -14,26 +14,26 @@ import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
14
14
  import { EntityId } from '@dxos/keys';
15
15
  import { Organization } from '@dxos/types';
16
16
 
17
- import AssistantBlueprint from './blueprint';
17
+ import AssistantSkill from './skill';
18
18
 
19
19
  EntityId.dangerouslyDisableRandomness();
20
20
 
21
21
  const TestLayer = AssistantTestLayer({
22
22
  aiServicePreset: 'edge-remote',
23
23
  operationHandlers: DatabaseHandlers,
24
- types: [Organization.Organization, Blueprint.Blueprint, Feed.Feed],
25
- blueprints: [AssistantBlueprint.make(), DatabaseBlueprint.make()],
24
+ types: [Organization.Organization, Skill.Skill, Feed.Feed],
25
+ skills: [AssistantSkill.make(), DatabaseSkill.make()],
26
26
  tracing: 'pretty',
27
27
  });
28
28
 
29
- describe('Assistant Blueprint', () => {
29
+ describe('Assistant Skill', () => {
30
30
  // TODO(dmaretskyi): Regenerate memoized conversation with ALLOW_LLM_GENERATION=1.
31
31
  it.effect.skip(
32
- 'works with Database blueprint to create objects',
32
+ 'works with Database skill to create objects',
33
33
  Effect.fnUntraced(
34
34
  function* (_) {
35
35
  const agent = yield* AgentService.createSession({
36
- blueprints: [AssistantBlueprint.make(), DatabaseBlueprint.make()],
36
+ skills: [AssistantSkill.make(), DatabaseSkill.make()],
37
37
  });
38
38
  yield* agent.submitPrompt('Create a new organization called "Test Corp".');
39
39
  yield* agent.waitForCompletion();
@@ -4,28 +4,28 @@
4
4
 
5
5
  import { LayoutOperation } from '@dxos/app-toolkit';
6
6
  import { templates } from '@dxos/assistant';
7
- import { Blueprint } from '@dxos/compute';
7
+ import { Skill } from '@dxos/compute';
8
8
 
9
9
  import { AssistantOperation } from '#types';
10
10
 
11
- const BLUEPRINT_KEY = 'org.dxos.blueprint.assistant';
11
+ const SKILL_KEY = 'org.dxos.skill.assistant';
12
12
 
13
13
  const make = () =>
14
- Blueprint.make({
15
- key: BLUEPRINT_KEY,
14
+ Skill.make({
15
+ key: SKILL_KEY,
16
16
  name: 'Assistant',
17
- tools: Blueprint.toolDefinitions({
17
+ tools: Skill.toolDefinitions({
18
18
  // TODO(wittjosiah): LayoutOperation.Open requires Capability.Service which is only available
19
- // via the compute-runtime layer (plugin-automation). Once Capability.Service is propagated
19
+ // via the compute-runtime layer (plugin-routine). Once Capability.Service is propagated
20
20
  // through LocalFunctionExecutionService, this will work without the compute-runtime dependency.
21
21
  operations: [LayoutOperation.Open, AssistantOperation.ResolveNavigationTargets],
22
22
  }),
23
23
  instructions: templates.system,
24
24
  });
25
25
 
26
- const blueprint: Blueprint.Definition = {
27
- key: BLUEPRINT_KEY,
26
+ const skill: Skill.Definition = {
27
+ key: SKILL_KEY,
28
28
  make,
29
29
  };
30
30
 
31
- export default blueprint;
31
+ export default skill;
@@ -2,16 +2,12 @@
2
2
  // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- import { type AutomationCapabilities } from '@dxos/plugin-automation';
5
+ import { type RoutineCapabilities } from '@dxos/plugin-routine';
6
6
 
7
- import { makeScheduledRoutineAutomation } from './scaffold';
7
+ import { makeScheduledRoutine } from './scaffold';
8
8
 
9
9
  /** Inbox supplies new messages; database queries recent objects; markdown writes the digest document. */
10
- const BLUEPRINT_KEYS = [
11
- 'org.dxos.blueprint.inbox',
12
- 'org.dxos.blueprint.database',
13
- 'org.dxos.blueprint.markdown',
14
- ] as const;
10
+ const SKILL_KEYS = ['org.dxos.skill.inbox', 'org.dxos.skill.database', 'org.dxos.skill.markdown'] as const;
15
11
 
16
12
  /** Runs daily by default; the user edits the schedule and the scope by opening the trigger and routine. */
17
13
  const DEFAULT_CRON = '0 9 * * *';
@@ -23,15 +19,17 @@ Review new messages in the inbox and recently changed objects. Produce a short d
23
19
  highlight anything that needs attention, and write it to a markdown document titled with the current date.
24
20
  `;
25
21
 
26
- export const dailyDigest: AutomationCapabilities.Template = {
27
- id: 'org.dxos.automation.dailyDigest',
22
+ export const dailyDigest: RoutineCapabilities.Template = {
23
+ id: 'org.dxos.routine.dailyDigest',
28
24
  label: 'Daily Digest',
29
25
  icon: 'ph--list-bullets--regular',
26
+ // Scheduled space-level digest — not meaningful for a specific object companion.
27
+ appliesTo: (subject) => subject == null,
30
28
  scaffold: ({ name }) =>
31
- makeScheduledRoutineAutomation({
29
+ makeScheduledRoutine({
32
30
  name: name ?? 'Daily Digest',
33
- instructions: DEFAULT_INSTRUCTIONS,
34
- blueprintKeys: BLUEPRINT_KEYS,
31
+ text: DEFAULT_INSTRUCTIONS,
32
+ skillKeys: SKILL_KEYS,
35
33
  cron: DEFAULT_CRON,
36
34
  }),
37
35
  };
@@ -2,10 +2,10 @@
2
2
  // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- import { type AutomationCapabilities } from '@dxos/plugin-automation';
5
+ import { type RoutineCapabilities } from '@dxos/plugin-routine';
6
6
 
7
7
  import { dailyDigest } from './daily-digest';
8
8
  import { researchBrief } from './research-brief';
9
9
 
10
- /** Generic, subject-less automation templates contributed alongside plugin-automation's Blank. */
11
- export const automationTemplates: AutomationCapabilities.Template[] = [researchBrief, dailyDigest];
10
+ /** Generic, subject-less routine templates contributed alongside plugin-routine's Blank. */
11
+ export const routineTemplates: RoutineCapabilities.Template[] = [researchBrief, dailyDigest];
@@ -2,16 +2,16 @@
2
2
  // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- import { type AutomationCapabilities } from '@dxos/plugin-automation';
5
+ import { type RoutineCapabilities } from '@dxos/plugin-routine';
6
6
 
7
- import { makeScheduledRoutineAutomation } from './scaffold';
7
+ import { makeScheduledRoutine } from './scaffold';
8
8
 
9
- /** The research blueprint drives the brief; web-search, markdown, and database tools support it. */
10
- const BLUEPRINT_KEYS = [
11
- 'org.dxos.blueprint.research',
12
- 'org.dxos.blueprint.webSearch',
13
- 'org.dxos.blueprint.markdown',
14
- 'org.dxos.blueprint.database',
9
+ /** The research skill drives the brief; web-search, markdown, and database tools support it. */
10
+ const SKILL_KEYS = [
11
+ 'org.dxos.skill.research',
12
+ 'org.dxos.skill.webSearch',
13
+ 'org.dxos.skill.markdown',
14
+ 'org.dxos.skill.database',
15
15
  ] as const;
16
16
 
17
17
  /** Runs weekly by default; the user edits the schedule and the topic by opening the trigger and routine. */
@@ -26,15 +26,17 @@ Gather current information with the web-search and research tools. Summarize the
26
26
  sources you used, and create a markdown document titled with the topic and the current date.
27
27
  `;
28
28
 
29
- export const researchBrief: AutomationCapabilities.Template = {
30
- id: 'org.dxos.automation.researchBrief',
29
+ export const researchBrief: RoutineCapabilities.Template = {
30
+ id: 'org.dxos.routine.researchBrief',
31
31
  label: 'Research Brief',
32
32
  icon: 'ph--newspaper--regular',
33
+ // Scheduled space-level research — not meaningful for a specific object companion.
34
+ appliesTo: (subject) => subject == null,
33
35
  scaffold: ({ name }) =>
34
- makeScheduledRoutineAutomation({
36
+ makeScheduledRoutine({
35
37
  name: name ?? 'Research Brief',
36
- instructions: DEFAULT_INSTRUCTIONS,
37
- blueprintKeys: BLUEPRINT_KEYS,
38
+ text: DEFAULT_INSTRUCTIONS,
39
+ skillKeys: SKILL_KEYS,
38
40
  cron: DEFAULT_CRON,
39
41
  }),
40
42
  };
@@ -0,0 +1,55 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import { describe, test } from 'vitest';
7
+
8
+ import { Instructions, Trigger } from '@dxos/compute';
9
+ import { Database, Obj } from '@dxos/echo';
10
+ import { EffectEx } from '@dxos/effect';
11
+ import { Routine } from '@dxos/plugin-routine';
12
+
13
+ import { dailyDigest } from './daily-digest';
14
+ import { researchBrief } from './research-brief';
15
+
16
+ const templates = [
17
+ { template: researchBrief, skillCount: 4 },
18
+ { template: dailyDigest, skillCount: 3 },
19
+ ];
20
+
21
+ describe('scheduled routine templates', () => {
22
+ test('apply only in the global create dialog (no companion subject)', ({ expect }) => {
23
+ // These templates appear only in the global create dialog, not in object companions.
24
+ expect(dailyDigest.appliesTo?.(undefined)).toBe(true);
25
+ expect(researchBrief.appliesTo?.(undefined)).toBe(true);
26
+ expect(dailyDigest.appliesTo?.({} as Obj.Unknown)).toBe(false);
27
+ expect(researchBrief.appliesTo?.({} as Obj.Unknown)).toBe(false);
28
+ });
29
+
30
+ for (const { template, skillCount } of templates) {
31
+ test(`${template.label} scaffolds an in-memory routine draft graph with a disabled timer trigger and instructions`, async ({
32
+ expect,
33
+ }) => {
34
+ // Templates are in-memory (no DB calls); Database.notAvailable surfaces any accidental DB access.
35
+ const draft = await EffectEx.runPromise(template.scaffold({}).pipe(Effect.provide(Database.notAvailable)));
36
+
37
+ // The draft is a routine graph wired for an instructions action (spec → RunInstructions).
38
+ expect(Obj.instanceOf(Routine.Routine, draft)).toBe(true);
39
+ expect(draft.spec?.kind).toBe('instructions');
40
+
41
+ // Timer trigger, disabled by default, owned by the routine.
42
+ const trigger = draft.triggers[0]?.target;
43
+ expect(trigger != null && Obj.instanceOf(Trigger.Trigger, trigger)).toBe(true);
44
+ expect(trigger?.enabled).toBe(false);
45
+ expect(trigger?.spec?.kind).toBe('timer');
46
+
47
+ // The owned instructions is the routine's action (an instructions action), with the right skill set.
48
+ const instructions = Routine.instructionsRef(draft)?.target;
49
+ expect(Obj.instanceOf(Instructions.Instructions, instructions)).toBe(true);
50
+ expect(Obj.instanceOf(Instructions.Instructions, instructions) ? instructions.skills : []).toHaveLength(
51
+ skillCount,
52
+ );
53
+ });
54
+ }
55
+ });
@@ -3,72 +3,37 @@
3
3
  //
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
- import * as Schema from 'effect/Schema';
7
6
 
8
- import { AgentPrompt } from '@dxos/assistant-toolkit';
9
- import { Blueprint, Operation, Routine, Trigger } from '@dxos/compute';
10
- import { Database, Filter, Obj, Ref } from '@dxos/echo';
11
- import { Automation } from '@dxos/plugin-automation';
12
-
13
- /** Registry key of the persisted AgentPrompt ("Run Routine") operation a routine trigger dispatches. */
14
- const AGENT_PROMPT_KEY = 'org.dxos.function.prompt';
7
+ import { Instructions, Skill, Trigger } from '@dxos/compute';
8
+ import { Ref } from '@dxos/echo';
9
+ import { Routine } from '@dxos/plugin-routine/types';
15
10
 
16
11
  export type ScheduledRoutineOptions = {
17
12
  name: string;
18
- instructions: string;
19
- blueprintKeys: readonly string[];
13
+ text: string;
14
+ skillKeys: readonly string[];
20
15
  cron: string;
21
16
  };
22
17
 
23
18
  /**
24
- * Scaffold a timer-driven automation: a Routine (instructions + blueprints) run by the shared AgentPrompt
25
- * operation on a cron schedule. The trigger starts disabled so the user can review the schedule and
26
- * instructions before activating, and is owned by the automation (cascade-deletes with it); the routine
27
- * stays independent, since it is edited separately and may be reused.
19
+ * Scaffold a timer-driven routine as an in-memory {@link Routine.Routine} draft graph. The caller's save
20
+ * flow (the companion's Save button) persists it; nothing is added to the database here, so the function is
21
+ * always safe to call without DB access.
22
+ *
23
+ * The trigger starts disabled so the user can review the schedule and instructions before activating.
28
24
  */
29
- export const makeScheduledRoutineAutomation = ({
25
+ export const makeScheduledRoutine = ({
30
26
  name,
31
- instructions,
32
- blueprintKeys,
27
+ text,
28
+ skillKeys,
33
29
  cron,
34
- }: ScheduledRoutineOptions): Effect.Effect<Automation.Automation, Error, Database.Service> =>
35
- Effect.gen(function* () {
36
- const blueprints = blueprintKeys.map((key) => Ref.fromURI(Blueprint.registryURI(key)));
37
- const routine = yield* Database.add(
38
- Routine.make({
39
- name,
40
- instructions,
41
- // No per-run input; the task lives in the instructions. Unknown (not Void) so the empty trigger
42
- // input still validates.
43
- input: Schema.Unknown,
44
- output: Schema.Void,
45
- blueprints,
46
- context: [],
47
- }),
48
- );
49
-
50
- // The trigger's `function` must reference an in-space PersistentOperation; reuse the space's AgentPrompt
51
- // or persist it on first use.
52
- const existingFns = yield* Database.query(
53
- Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(AGENT_PROMPT_KEY)),
54
- ).run;
55
- const agentPromptFn = existingFns[0] ?? (yield* Database.add(Operation.serialize(AgentPrompt)));
56
-
57
- const trigger = yield* Database.add(
58
- Obj.make(Trigger.Trigger, {
59
- enabled: false,
60
- function: Ref.make(agentPromptFn),
61
- spec: Trigger.specTimer(cron),
62
- input: { prompt: Ref.make(routine), input: {} },
63
- concurrency: 1,
64
- }),
65
- );
66
-
67
- const automation = Automation.make({
30
+ }: ScheduledRoutineOptions): Effect.Effect<Routine.Routine, never, never> => {
31
+ const skills = skillKeys.map((key) => Ref.fromURI(Skill.registryURI(key)));
32
+ return Effect.succeed(
33
+ Routine.make({
68
34
  name,
69
- runnable: Ref.make(agentPromptFn),
70
- triggers: [Ref.make(trigger)],
71
- });
72
- Obj.setParent(trigger, automation);
73
- return automation;
74
- });
35
+ instructions: Instructions.make({ name, text, skills }),
36
+ trigger: Trigger.make({ spec: Trigger.specTimer(cron), enabled: false }),
37
+ }),
38
+ );
39
+ };