@schlenkr/ragents 0.1.10 → 0.1.11

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 (743) hide show
  1. package/apps/server/package.json +1 -1
  2. package/apps/server/src/access-projection.ts +4 -4
  3. package/apps/server/src/access-service.ts +3 -3
  4. package/apps/server/src/access-session.ts +19 -19
  5. package/apps/server/src/api/contracts.ts +29 -29
  6. package/apps/server/src/api/core-methods.ts +17 -17
  7. package/apps/server/src/api/delivery.ts +2 -2
  8. package/apps/server/src/api/reference.ts +27 -27
  9. package/apps/server/src/api/rights.ts +18 -18
  10. package/apps/server/src/chat-handler.ts +5 -5
  11. package/apps/server/src/config-definition.ts +37 -10
  12. package/apps/server/src/config-file.ts +49 -49
  13. package/apps/server/src/config.ts +2 -0
  14. package/apps/server/src/data-directory.ts +2 -2
  15. package/apps/server/src/external-access.ts +1 -1
  16. package/apps/server/src/folder-install.ts +1 -1
  17. package/apps/server/src/help-files.ts +1 -1
  18. package/apps/server/src/host-api.json +6 -1
  19. package/apps/server/src/host-api.ts +3 -2
  20. package/apps/server/src/host-record.ts +3 -3
  21. package/apps/server/src/host-resolution-hooks.mjs +4 -4
  22. package/apps/server/src/host-version.ts +17 -17
  23. package/apps/server/src/host-web.ts +5 -5
  24. package/apps/server/src/main.ts +6 -6
  25. package/apps/server/src/missing-environment.ts +6 -6
  26. package/apps/server/src/parent-watch.ts +4 -4
  27. package/apps/server/src/plugin-build/build.ts +31 -31
  28. package/apps/server/src/plugin-build/host-api-names.ts +7 -7
  29. package/apps/server/src/plugin-build/plugin-description.ts +15 -15
  30. package/apps/server/src/plugin-build/typecheck.ts +1 -1
  31. package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
  32. package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
  33. package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
  34. package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
  35. package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
  36. package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
  37. package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
  38. package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
  39. package/apps/server/src/plugin-support/front-matter.ts +6 -6
  40. package/apps/server/src/plugin-support/http.ts +2 -2
  41. package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
  44. package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
  45. package/apps/server/src/plugin-support/model-aliases.ts +30 -20
  46. package/apps/server/src/plugin-support/model-choice.ts +15 -15
  47. package/apps/server/src/plugin-support/model-completion.ts +44 -23
  48. package/apps/server/src/plugin-support/model-providers.ts +170 -0
  49. package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
  50. package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
  51. package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
  52. package/apps/server/src/plugin-support/plugin-config.ts +3 -3
  53. package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
  54. package/apps/server/src/plugin-support/plugins-root.ts +2 -2
  55. package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
  56. package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
  57. package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
  58. package/apps/server/src/plugin-support/product-relay.ts +9 -9
  59. package/apps/server/src/plugin-support/product-start-options.ts +4 -4
  60. package/apps/server/src/plugin-support/prompt.ts +1 -1
  61. package/apps/server/src/plugin-support/provision.ts +8 -8
  62. package/apps/server/src/plugin-support/run-scripts.ts +17 -17
  63. package/apps/server/src/plugin-support/skills.ts +18 -18
  64. package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
  65. package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
  66. package/apps/server/src/plugin-support/system-prompts.ts +11 -11
  67. package/apps/server/src/plugin-support/thinking-level.ts +2 -2
  68. package/apps/server/src/plugin-support/tool-availability.ts +2 -2
  69. package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
  70. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
  71. package/apps/server/src/plugin-support/zip.ts +7 -7
  72. package/apps/server/src/profile/bundle-manifest.ts +17 -17
  73. package/apps/server/src/profile/compose.ts +12 -7
  74. package/apps/server/src/profile/plugin-discovery.ts +12 -12
  75. package/apps/server/src/profile/provisioning.ts +5 -5
  76. package/apps/server/src/profile-target.ts +10 -10
  77. package/apps/server/src/protocol.ts +2 -2
  78. package/apps/server/src/provider.ts +61 -56
  79. package/apps/server/src/ragents/actor-chat-history.ts +8 -8
  80. package/apps/server/src/ragents/chat-text-positions.ts +2 -2
  81. package/apps/server/src/ragents/coordinator.ts +2 -2
  82. package/apps/server/src/ragents/engine.ts +23 -23
  83. package/apps/server/src/ragents/global-chat.ts +8 -8
  84. package/apps/server/src/ragents/host-services.ts +6 -3
  85. package/apps/server/src/ragents/journal-chat-events.ts +1 -1
  86. package/apps/server/src/ragents/run-owner.ts +2 -2
  87. package/apps/server/src/ragents/session.ts +49 -49
  88. package/apps/server/src/ragents/typescript-tools.ts +12 -12
  89. package/apps/server/src/ragents/workspace-runtime.ts +28 -28
  90. package/apps/server/src/rpc/dispatcher.ts +19 -19
  91. package/apps/server/src/rpc/http-transport.ts +11 -11
  92. package/apps/server/src/rpc/stdio-transport.ts +3 -3
  93. package/apps/server/src/run-preparation-input.ts +5 -5
  94. package/apps/server/src/run-preparation.ts +24 -24
  95. package/apps/server/src/run-transfer.ts +39 -39
  96. package/apps/server/src/server.ts +48 -48
  97. package/apps/server/src/settings.ts +1 -1
  98. package/apps/server/src/startup.ts +3 -3
  99. package/apps/server/src/title-compactor.ts +9 -9
  100. package/apps/server/src/title-settings.ts +3 -3
  101. package/apps/server/src/web-bundles.ts +2 -2
  102. package/apps/server/src/web-stylesheet.ts +2 -2
  103. package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
  104. package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
  105. package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
  106. package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
  107. package/apps/web/dist/help/guide-access.html +5 -5
  108. package/apps/web/dist/help/guide-access.md +2 -2
  109. package/apps/web/dist/help/guide-clients.html +53 -54
  110. package/apps/web/dist/help/guide-clients.md +50 -51
  111. package/apps/web/dist/help/guide-distributed.html +12 -7
  112. package/apps/web/dist/help/guide-distributed.md +9 -4
  113. package/apps/web/dist/help/guide-functions.html +3 -3
  114. package/apps/web/dist/help/guide-getting-started.html +24 -15
  115. package/apps/web/dist/help/guide-getting-started.md +22 -12
  116. package/apps/web/dist/help/guide-ideas.html +3 -3
  117. package/apps/web/dist/help/guide-plugins.html +5 -4
  118. package/apps/web/dist/help/guide-plugins.md +2 -1
  119. package/apps/web/dist/help/guide-programs.html +3 -3
  120. package/apps/web/dist/help/guide-runtime.html +6 -6
  121. package/apps/web/dist/help/guide-runtime.md +3 -3
  122. package/apps/web/dist/help/guide.html +3 -3
  123. package/apps/web/dist/help/index.html +196 -144
  124. package/apps/web/dist/help/mini-app.css +6 -0
  125. package/apps/web/dist/help/mini-app.js +14 -14
  126. package/apps/web/dist/host-web.json +90 -90
  127. package/apps/web/dist/index.html +3 -3
  128. package/apps/web/dist/run-panel.html +3 -3
  129. package/apps/web/package.json +1 -1
  130. package/apps/web/src/AccessContext.tsx +15 -15
  131. package/apps/web/src/App.tsx +13 -13
  132. package/apps/web/src/DiffCode.tsx +2 -2
  133. package/apps/web/src/HelpDialog.tsx +3 -3
  134. package/apps/web/src/Overview.tsx +13 -13
  135. package/apps/web/src/PluginActivation.ts +1 -1
  136. package/apps/web/src/PluginChat.tsx +15 -15
  137. package/apps/web/src/PluginFailureNotice.tsx +1 -1
  138. package/apps/web/src/PluginRegistry.tsx +44 -44
  139. package/apps/web/src/RunPreparationChat.tsx +11 -11
  140. package/apps/web/src/RunStore.ts +1 -1
  141. package/apps/web/src/SessionList.tsx +14 -14
  142. package/apps/web/src/SettingsModal.tsx +112 -112
  143. package/apps/web/src/StartOptions.tsx +11 -11
  144. package/apps/web/src/StartSelection.tsx +11 -11
  145. package/apps/web/src/StartTiles.tsx +8 -8
  146. package/apps/web/src/SurfaceShortcuts.tsx +3 -3
  147. package/apps/web/src/ThemeSettings.tsx +8 -8
  148. package/apps/web/src/TitleModelSettings.tsx +13 -13
  149. package/apps/web/src/WorkspacePanel.tsx +9 -9
  150. package/apps/web/src/access-session.ts +4 -4
  151. package/apps/web/src/access-token.ts +5 -5
  152. package/apps/web/src/actor-conversation.ts +3 -3
  153. package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
  154. package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
  155. package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
  156. package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
  157. package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
  158. package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
  159. package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
  160. package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
  161. package/apps/web/src/api.ts +7 -7
  162. package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
  163. package/apps/web/src/chat/chat-target.ts +3 -3
  164. package/apps/web/src/chat/requests.ts +2 -2
  165. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  166. package/apps/web/src/chat-view-settings.tsx +5 -6
  167. package/apps/web/src/diff-view.css +1 -1
  168. package/apps/web/src/highlighting.css +1 -1
  169. package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
  170. package/apps/web/src/lib/labels.ts +6 -6
  171. package/apps/web/src/main.tsx +4 -4
  172. package/apps/web/src/offered-machines.ts +2 -2
  173. package/apps/web/src/page-opener.tsx +1 -1
  174. package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
  175. package/apps/web/src/panel/LoginForm.tsx +6 -6
  176. package/apps/web/src/panel/PanelDialogs.tsx +22 -22
  177. package/apps/web/src/panel/PanelHeader.tsx +2 -2
  178. package/apps/web/src/panel/PanelPage.tsx +1 -1
  179. package/apps/web/src/panel/RunLine.tsx +4 -4
  180. package/apps/web/src/panel/RunsPage.tsx +15 -15
  181. package/apps/web/src/panel/StartPage.tsx +26 -26
  182. package/apps/web/src/panel/connection-state.ts +9 -9
  183. package/apps/web/src/panel/contract.ts +28 -28
  184. package/apps/web/src/panel.tsx +1 -1
  185. package/apps/web/src/plugin-bootstrap.ts +5 -5
  186. package/apps/web/src/product/ModelControl.tsx +3 -3
  187. package/apps/web/src/product/ProductModelSettings.tsx +16 -16
  188. package/apps/web/src/product/SystemPromptControl.tsx +11 -11
  189. package/apps/web/src/product/model-settings.ts +2 -2
  190. package/apps/web/src/rpc/client.ts +16 -16
  191. package/apps/web/src/rpc.ts +1 -1
  192. package/apps/web/src/run-overview.ts +1 -1
  193. package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
  194. package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
  195. package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
  196. package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
  197. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
  198. package/apps/web/src/run-panel/clipboard.ts +3 -3
  199. package/apps/web/src/run-panel/host-contract.ts +5 -5
  200. package/apps/web/src/run-panel/host.ts +15 -15
  201. package/apps/web/src/run-panel/input-bridge.ts +1 -1
  202. package/apps/web/src/run-panel/run-panel-location.ts +5 -5
  203. package/apps/web/src/run-panel/use-session-list.ts +1 -1
  204. package/apps/web/src/run-panel/workspace-state.ts +3 -3
  205. package/apps/web/src/run-panel.tsx +4 -4
  206. package/apps/web/src/run-preparation.ts +2 -2
  207. package/apps/web/src/run-view.ts +3 -3
  208. package/apps/web/src/settings-contributions.ts +32 -32
  209. package/apps/web/src/theme.ts +9 -9
  210. package/apps/web/src/title-model-settings.ts +6 -6
  211. package/apps/web/src/ui/ListDetail.tsx +9 -9
  212. package/apps/web/src/ui/dialog.tsx +2 -2
  213. package/apps/web/src/ui/modal-controller.ts +3 -3
  214. package/apps/web/src/ui/modal.tsx +2 -2
  215. package/apps/web/src/ui/popover.tsx +1 -1
  216. package/apps/web/src/ui/relative-time.ts +8 -8
  217. package/apps/web/src/ui/startup-notice.tsx +2 -2
  218. package/apps/web/src/ui/state-icon.tsx +1 -1
  219. package/apps/web/src/ui/state-vocabulary.ts +16 -16
  220. package/apps/web/src/ui/stop-button.tsx +2 -2
  221. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  222. package/bundles/ragents.activity/web/classes.json +1 -1
  223. package/bundles/ragents.activity/web/index.js +1 -1
  224. package/bundles/ragents.activity/web/index.js.map +2 -2
  225. package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
  226. package/bundles/ragents.actor-programs/server/index.js +225 -225
  227. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  228. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  229. package/bundles/ragents.actor-programs/web/index.js +1 -1
  230. package/bundles/ragents.actor-programs/web/index.js.map +3 -3
  231. package/bundles/ragents.ask/ragents-bundle.json +2 -2
  232. package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
  233. package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
  234. package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
  235. package/bundles/ragents.ask/server/index.js +23 -23
  236. package/bundles/ragents.ask/server/index.js.map +2 -2
  237. package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
  238. package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
  239. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
  240. package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
  241. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
  242. package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
  243. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
  244. package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
  245. package/bundles/ragents.ask/web/classes.json +1 -1
  246. package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
  247. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
  248. package/bundles/ragents.ask/web/exports/web/api.js +1 -1
  249. package/bundles/ragents.ask/web/index.js +1 -1
  250. package/bundles/ragents.ask/web/index.js.map +2 -2
  251. package/bundles/ragents.browser/executor/index.mjs +35 -35
  252. package/bundles/ragents.browser/executor/index.mjs.map +2 -2
  253. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  254. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
  255. package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
  256. package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
  257. package/bundles/ragents.browser/server/index.js +31 -31
  258. package/bundles/ragents.browser/server/index.js.map +2 -2
  259. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  260. package/bundles/ragents.documents/prompt.hbs +1 -1
  261. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  262. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
  263. package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
  264. package/bundles/ragents.documents/server/exports/contract.js +1 -1
  265. package/bundles/ragents.documents/server/index.js +26 -26
  266. package/bundles/ragents.documents/server/index.js.map +2 -2
  267. package/bundles/ragents.documents/web/classes.json +1 -1
  268. package/bundles/ragents.documents/web/index.js +1 -1
  269. package/bundles/ragents.documents/web/index.js.map +3 -3
  270. package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
  271. package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
  272. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  273. package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
  274. package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
  275. package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
  276. package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
  277. package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
  278. package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
  279. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  280. package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
  281. package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
  282. package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
  283. package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
  284. package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
  285. package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
  286. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  287. package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
  288. package/bundles/ragents.lsp-typescript/web/index.js +1 -1
  289. package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
  290. package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
  291. package/bundles/ragents.model-relay/server/index.js +25 -21
  292. package/bundles/ragents.model-relay/server/index.js.map +2 -2
  293. package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
  294. package/bundles/ragents.orchestration/server/index.js +28 -28
  295. package/bundles/ragents.orchestration/server/index.js.map +2 -2
  296. package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
  297. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
  298. package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
  299. package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
  300. package/bundles/ragents.orchestration/web/classes.json +1 -1
  301. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  302. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
  303. package/bundles/ragents.orchestration/web/index.js +8 -8
  304. package/bundles/ragents.orchestration/web/index.js.map +2 -2
  305. package/bundles/ragents.overseer/ragents-bundle.json +2 -2
  306. package/bundles/ragents.overseer/server/index.js +98 -98
  307. package/bundles/ragents.overseer/server/index.js.map +2 -2
  308. package/bundles/ragents.overseer/web/classes.json +1 -1
  309. package/bundles/ragents.overseer/web/index.js +1 -1
  310. package/bundles/ragents.overseer/web/index.js.map +2 -2
  311. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  312. package/bundles/ragents.processes/server/index.js +11 -11
  313. package/bundles/ragents.processes/server/index.js.map +2 -2
  314. package/bundles/ragents.processes/web/classes.json +1 -1
  315. package/bundles/ragents.processes/web/index.js +3 -3
  316. package/bundles/ragents.processes/web/index.js.map +2 -2
  317. package/bundles/ragents.product/ragents-bundle.json +2 -2
  318. package/bundles/ragents.product/server/index.js +12 -13
  319. package/bundles/ragents.product/server/index.js.map +2 -2
  320. package/bundles/ragents.product/web/classes.json +1 -1
  321. package/bundles/ragents.product/web/index.js +1 -1
  322. package/bundles/ragents.product/web/index.js.map +2 -2
  323. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  324. package/bundles/ragents.profile-distribution/server/index.js +31 -31
  325. package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
  326. package/bundles/ragents.reference/ragents-bundle.json +2 -2
  327. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  328. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  329. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  330. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  331. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  332. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  333. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  334. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  335. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  336. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  337. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  338. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  339. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  340. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  341. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  342. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  343. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  344. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  345. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  346. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  347. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  348. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  349. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  350. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  351. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  352. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  353. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  354. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  355. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  356. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  357. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  358. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  359. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  360. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  361. package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
  362. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  363. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  364. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  365. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  366. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  367. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  368. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  369. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  370. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  371. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  372. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  373. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  374. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  375. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  376. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  377. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  378. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  379. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  380. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  381. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  382. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  383. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  384. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  385. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  386. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  387. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  388. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  389. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  390. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  391. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  392. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  393. package/bundles/ragents.reference/web/classes.json +1 -1
  394. package/bundles/ragents.reference/web/index.js +1 -1
  395. package/bundles/ragents.reference/web/index.js.map +2 -2
  396. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  397. package/bundles/ragents.todo/server/index.js +5 -5
  398. package/bundles/ragents.todo/server/index.js.map +2 -2
  399. package/bundles/ragents.todo/web/classes.json +1 -1
  400. package/bundles/ragents.todo/web/index.js +1 -1
  401. package/bundles/ragents.todo/web/index.js.map +2 -2
  402. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  403. package/bundles/ragents.transcript/server/index.js +11 -11
  404. package/bundles/ragents.transcript/server/index.js.map +2 -2
  405. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  406. package/bundles/ragents.watch/server/index.js +48 -48
  407. package/bundles/ragents.watch/server/index.js.map +2 -2
  408. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  409. package/bundles/ragents.workspace/server/index.js +81 -81
  410. package/bundles/ragents.workspace/server/index.js.map +2 -2
  411. package/bundles/ragents.workspace/web/classes.json +1 -1
  412. package/bundles/ragents.workspace/web/index.js +1 -1
  413. package/bundles/ragents.workspace/web/index.js.map +2 -2
  414. package/package.json +4 -4
  415. package/packages/agent/dist/core/model-runtime.d.ts +7 -2
  416. package/packages/agent/dist/index.d.ts +1 -1
  417. package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
  418. package/packages/agent/src/core/compaction/utils.ts +1 -1
  419. package/packages/agent/src/core/model-runtime.ts +45 -5
  420. package/packages/agent/src/index.ts +1 -1
  421. package/packages/agent/src/loop/agent-loop.ts +2 -2
  422. package/packages/ai/dist/models.d.ts +1 -0
  423. package/packages/ai/dist/models.generated.d.ts +4544 -983
  424. package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
  425. package/packages/ai/src/api/ai-sdk.ts +33 -7
  426. package/packages/ai/src/api-registry.ts +1 -1
  427. package/packages/ai/src/index.ts +2 -2
  428. package/packages/ai/src/models.generated.ts +1 -1
  429. package/packages/ai/src/models.ts +1 -1
  430. package/packages/ai/src/providers/openrouter.models.ts +3723 -550
  431. package/packages/ragents/src/access.ts +12 -12
  432. package/packages/ragents/src/agents/actor-input.ts +33 -33
  433. package/packages/ragents/src/agents/catalog.ts +1 -1
  434. package/packages/ragents/src/agents/delivery.ts +17 -17
  435. package/packages/ragents/src/agents/plugins.ts +1 -1
  436. package/packages/ragents/src/agents/scheduler.ts +7 -7
  437. package/packages/ragents/src/agents/schemas.ts +1 -1
  438. package/packages/ragents/src/agents/tool-orientation.ts +4 -4
  439. package/packages/ragents/src/agents/tools.ts +20 -20
  440. package/packages/ragents/src/agents/toolset.ts +5 -5
  441. package/packages/ragents/src/agents/workspaces.ts +1 -1
  442. package/packages/ragents/src/domain/events.ts +1 -1
  443. package/packages/ragents/src/domain/model.ts +5 -5
  444. package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
  445. package/packages/ragents/src/drivers/agent-turn.ts +4 -4
  446. package/packages/ragents/src/drivers/agent.ts +2 -2
  447. package/packages/ragents/src/drivers/attachments.ts +4 -4
  448. package/packages/ragents/src/http/contracts.ts +14 -14
  449. package/packages/ragents/src/http/methods.ts +6 -6
  450. package/packages/ragents/src/plugin-host.ts +119 -119
  451. package/packages/ragents/src/plugin-types.ts +16 -16
  452. package/packages/ragents/src/rpc/contract.ts +5 -5
  453. package/packages/ragents/src/rpc/contribution.ts +2 -2
  454. package/packages/ragents/src/rpc/peer.ts +11 -11
  455. package/packages/ragents/src/rpc/protocol.ts +2 -2
  456. package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
  457. package/packages/ragents/src/runtime/journal.ts +10 -10
  458. package/packages/ragents/src/runtime/orchestration.ts +8 -8
  459. package/packages/ragents/src/runtime/stop.ts +2 -2
  460. package/packages/ragents/src/script/mediators.ts +35 -35
  461. package/packages/ragents/src/typescript/async-compiler.ts +14 -14
  462. package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
  463. package/packages/ragents/src/typescript/compiler.ts +7 -7
  464. package/packages/ragents/src/typescript/snippet.ts +5 -5
  465. package/packages/workspace-executor/src/bash-launch.ts +13 -13
  466. package/packages/workspace-executor/src/commands.ts +18 -18
  467. package/packages/workspace-executor/src/context.ts +15 -15
  468. package/packages/workspace-executor/src/contributions.ts +35 -35
  469. package/packages/workspace-executor/src/errors.ts +1 -1
  470. package/packages/workspace-executor/src/executor.ts +15 -15
  471. package/packages/workspace-executor/src/files.ts +30 -30
  472. package/packages/workspace-executor/src/language-server/contract.ts +2 -2
  473. package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
  474. package/packages/workspace-executor/src/language-server/host.ts +35 -35
  475. package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
  476. package/packages/workspace-executor/src/language-server/module.ts +11 -11
  477. package/packages/workspace-executor/src/language-server/roots.ts +3 -3
  478. package/packages/workspace-executor/src/language-server/session.ts +15 -15
  479. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
  480. package/packages/workspace-executor/src/managed-process.ts +12 -12
  481. package/packages/workspace-executor/src/module.ts +8 -8
  482. package/packages/workspace-executor/src/modules.ts +3 -3
  483. package/packages/workspace-executor/src/paths.ts +11 -11
  484. package/packages/workspace-executor/src/process-sandbox.ts +3 -3
  485. package/packages/workspace-executor/src/processes/module.ts +3 -3
  486. package/packages/workspace-executor/src/processes/process-table.ts +20 -20
  487. package/packages/workspace-executor/src/processes/scanner.ts +3 -3
  488. package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
  489. package/packages/workspace-executor/src/processes/terminator.ts +13 -13
  490. package/packages/workspace-executor/src/run-folders.ts +3 -3
  491. package/packages/workspace-executor/src/safe-environment.ts +4 -4
  492. package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
  493. package/packages/workspace-executor/src/session-ident.ts +2 -2
  494. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  495. package/packages/workspace-executor/src/tools.ts +5 -5
  496. package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
  497. package/plugins/ragents.activity/web/activity.ts +2 -2
  498. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  499. package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
  500. package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
  501. package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
  502. package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
  503. package/plugins/ragents.actor-programs/server/limits.ts +3 -3
  504. package/plugins/ragents.actor-programs/server/methods.ts +1 -1
  505. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
  506. package/plugins/ragents.actor-programs/server/routes.ts +8 -8
  507. package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
  508. package/plugins/ragents.actor-programs/server/templates.ts +59 -59
  509. package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
  510. package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
  511. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
  512. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
  513. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
  514. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
  515. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
  516. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
  517. package/plugins/ragents.actor-programs/web/api.ts +36 -36
  518. package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
  519. package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
  520. package/plugins/ragents.actor-programs/web/context.ts +1 -1
  521. package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
  522. package/plugins/ragents.actor-programs/web/index.tsx +1 -1
  523. package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
  524. package/plugins/ragents.ask/ask-payload.ts +1 -1
  525. package/plugins/ragents.ask/contract.ts +5 -5
  526. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  527. package/plugins/ragents.ask/server/ask-service.ts +9 -9
  528. package/plugins/ragents.ask/server/ask-tool.ts +10 -10
  529. package/plugins/ragents.ask/server/contract.ts +5 -5
  530. package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
  531. package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
  532. package/plugins/ragents.ask/web/index.tsx +2 -2
  533. package/plugins/ragents.browser/executor/contract.ts +6 -6
  534. package/plugins/ragents.browser/executor/index.ts +1 -1
  535. package/plugins/ragents.browser/executor/module.ts +6 -6
  536. package/plugins/ragents.browser/executor/pages.ts +32 -32
  537. package/plugins/ragents.browser/executor/playwright.ts +8 -8
  538. package/plugins/ragents.browser/provision.ts +7 -7
  539. package/plugins/ragents.browser/server/browser.ts +14 -14
  540. package/plugins/ragents.browser/server/contract.ts +1 -1
  541. package/plugins/ragents.browser/server/index.ts +1 -1
  542. package/plugins/ragents.browser/server/tools.ts +14 -14
  543. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
  544. package/plugins/ragents.documents/contract.ts +2 -2
  545. package/plugins/ragents.documents/prompt.hbs +1 -1
  546. package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
  547. package/plugins/ragents.documents/server/files-route.ts +6 -6
  548. package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
  549. package/plugins/ragents.documents/server/store.ts +1 -1
  550. package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
  551. package/plugins/ragents.documents/web/index.tsx +11 -11
  552. package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
  553. package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
  554. package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
  555. package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
  556. package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
  557. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
  558. package/plugins/ragents.lsp-typescript/executor.ts +3 -3
  559. package/plugins/ragents.model-relay/server/config.ts +6 -2
  560. package/plugins/ragents.model-relay/server/index.ts +2 -2
  561. package/plugins/ragents.model-relay/server/relay.ts +23 -22
  562. package/plugins/ragents.orchestration/contract.ts +8 -8
  563. package/plugins/ragents.orchestration/server/index.ts +4 -4
  564. package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
  565. package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
  566. package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
  567. package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
  568. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
  569. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
  570. package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
  571. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
  572. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
  573. package/plugins/ragents.orchestration/web/Center.tsx +5 -5
  574. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
  575. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
  576. package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
  577. package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
  578. package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
  579. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  580. package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
  581. package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
  582. package/plugins/ragents.orchestration/web/constants.ts +2 -2
  583. package/plugins/ragents.orchestration/web/executions.ts +6 -6
  584. package/plugins/ragents.orchestration/web/format.ts +1 -1
  585. package/plugins/ragents.orchestration/web/index.tsx +2 -2
  586. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
  587. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
  588. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
  589. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
  590. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
  591. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
  592. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
  593. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
  594. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
  595. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
  596. package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
  597. package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
  598. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
  599. package/plugins/ragents.overseer/contract.ts +20 -20
  600. package/plugins/ragents.overseer/server/api.ts +6 -6
  601. package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
  602. package/plugins/ragents.overseer/server/coordinator.ts +4 -4
  603. package/plugins/ragents.overseer/server/index.ts +24 -24
  604. package/plugins/ragents.overseer/server/orientation.ts +8 -8
  605. package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
  606. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  607. package/plugins/ragents.overseer/server/settings.ts +6 -6
  608. package/plugins/ragents.overseer/server/user-location.ts +16 -16
  609. package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
  610. package/plugins/ragents.overseer/web/index.tsx +20 -20
  611. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  612. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  613. package/plugins/ragents.processes/contract.ts +5 -5
  614. package/plugins/ragents.processes/server/methods.ts +4 -4
  615. package/plugins/ragents.processes/server/observer.ts +8 -8
  616. package/plugins/ragents.processes/server/run-processes.ts +2 -2
  617. package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
  618. package/plugins/ragents.processes/web/processes.ts +10 -10
  619. package/plugins/ragents.product/server/config.ts +1 -1
  620. package/plugins/ragents.product/server/index.ts +4 -4
  621. package/plugins/ragents.product/server/runtime.ts +9 -10
  622. package/plugins/ragents.product/web/index.tsx +1 -1
  623. package/plugins/ragents.profile-distribution/contract.ts +10 -10
  624. package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
  625. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  626. package/plugins/ragents.profile-distribution/server/index.ts +4 -4
  627. package/plugins/ragents.reference/examples.ts +27 -27
  628. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
  629. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
  630. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
  631. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
  632. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
  633. package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
  634. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
  635. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
  636. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
  637. package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
  638. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
  639. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  640. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
  641. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
  642. package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
  643. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
  644. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
  645. package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
  646. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
  647. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
  648. package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
  649. package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
  650. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
  651. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  652. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
  653. package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
  654. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
  655. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
  656. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
  657. package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
  658. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
  659. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  660. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
  661. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
  662. package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
  663. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  664. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
  665. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
  666. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
  667. package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
  668. package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
  669. package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
  670. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
  671. package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
  672. package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
  673. package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
  674. package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
  675. package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
  676. package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
  677. package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
  678. package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
  679. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
  680. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
  681. package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
  682. package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
  683. package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
  684. package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
  685. package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
  686. package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
  687. package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
  688. package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
  689. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
  690. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
  691. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
  692. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
  693. package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
  694. package/plugins/ragents.reference/walkthroughs.ts +128 -128
  695. package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
  696. package/plugins/ragents.todo/server/todo-tool.ts +6 -6
  697. package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
  698. package/plugins/ragents.transcript/server/transcript.ts +11 -11
  699. package/plugins/ragents.watch/server/condition.ts +4 -4
  700. package/plugins/ragents.watch/server/functions.ts +27 -27
  701. package/plugins/ragents.watch/server/observation.ts +2 -2
  702. package/plugins/ragents.watch/server/service.ts +14 -14
  703. package/plugins/ragents.workspace/client/transport.ts +1 -1
  704. package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
  705. package/plugins/ragents.workspace/contract.ts +46 -46
  706. package/plugins/ragents.workspace/server/binding.ts +20 -20
  707. package/plugins/ragents.workspace/server/browse-route.ts +8 -8
  708. package/plugins/ragents.workspace/server/clients.ts +42 -42
  709. package/plugins/ragents.workspace/server/config.ts +7 -7
  710. package/plugins/ragents.workspace/server/index.ts +3 -3
  711. package/plugins/ragents.workspace/server/runtime.ts +26 -26
  712. package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
  713. package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
  714. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
  715. package/plugins/ragents.workspace/web/index.tsx +1 -1
  716. package/ragents.config.core.ts +1 -1
  717. package/ragents.config.developer.ts +3 -3
  718. package/ragents.config.showcase.ts +2 -2
  719. package/scripts/agent/agent-cli.ts +96 -96
  720. package/scripts/agent/journal.ts +5 -5
  721. package/scripts/agent/turn-control.ts +4 -4
  722. package/scripts/package/build-package.ts +29 -29
  723. package/scripts/package/host-links.mjs +3 -3
  724. package/scripts/package/publish-package.ts +29 -29
  725. package/scripts/package/ragents.mjs +19 -19
  726. package/scripts/plugin/build-builtin-plugins.ts +5 -5
  727. package/scripts/plugin/plugin-cli.ts +14 -14
  728. package/scripts/provision/run-provision.ts +14 -15
  729. package/scripts/remote/connect.ts +46 -46
  730. package/scripts/remote/start.ts +18 -18
  731. package/scripts/workspace-client/run-workspace-client.ts +23 -23
  732. package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
  733. package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
  734. package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
  735. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
  736. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
  737. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
  738. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
  739. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
  740. package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
  741. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
  742. /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
  743. /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
@@ -71,8 +71,8 @@
71
71
  ]
72
72
  }
73
73
  },
74
- "stand": "01dc1af9ab43d91930716022bdd8fe8cd851316deced6f38b1b37bf14cacad61",
75
- "sourceStand": "16ec9fca07952d7e84bf27ccf48a65142f3d2cdf8384fca45fe1ff0a004f4221",
74
+ "stand": "737af8ec1f32b897245fee568d26a224154eaefee949d8b01a42b6e63857a77c",
75
+ "sourceStand": "ffbff685251dd09eac7cb4d41239f6adc28d8c461c1e834e84cf86f186f2890b",
76
76
  "server": "server/index.js",
77
77
  "web": {
78
78
  "entry": "web/index.js",
@@ -3,11 +3,11 @@ const require = __ragentsCreateRequire(import.meta.url);
3
3
 
4
4
  // server/contract.ts
5
5
  import { serviceToken } from "@ragents/engine";
6
- var DISMISSED_ANSWER = "Der Benutzer hat die Frage verworfen.";
6
+ var DISMISSED_ANSWER = "The user dismissed the question.";
7
7
  var askServiceToken = serviceToken("ragents.ask.service");
8
8
 
9
9
  export {
10
10
  DISMISSED_ANSWER,
11
11
  askServiceToken
12
12
  };
13
- //# sourceMappingURL=chunk-PDJO75SQ.js.map
13
+ //# sourceMappingURL=chunk-YOV27MAR.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../plugins/ragents.ask/server/contract.ts"],
4
+ "sourcesContent": ["import { serviceToken, type ServiceToken } from \"@ragents/engine\";\n\n/** The answer `ask` returns when the user dismisses the question. */\nexport const DISMISSED_ANSWER = \"The user dismissed the question.\";\n\nexport interface AskCall {\n runId: string;\n /** Who asks: an agent in its running turn, without a turn the run owner. */\n agentId: string;\n turnId: string | null;\n commandId: string;\n}\n\nexport interface AskRequest {\n question: string;\n options: string[];\n multi?: boolean;\n description?: string;\n parameters?: Record<string, string>;\n /** The actor that receives an answer nobody waits for anymore; if omitted, the asker. */\n recipient?: string;\n}\n\nexport interface AskService {\n ask: (call: AskCall, request: AskRequest, signal: AbortSignal | undefined) => Promise<string>;\n /** Dismisses an open question: a waiting call gets DISMISSED_ANSWER, nobody gets an input. */\n withdraw: (runId: string, actionId: string) => void;\n}\n\nexport const askServiceToken: ServiceToken<AskService> = serviceToken(\"ragents.ask.service\");\n"],
5
+ "mappings": ";;;;AAAA,SAAS,oBAAuC;AAGzC,IAAM,mBAAmB;AA0BzB,IAAM,kBAA4C,aAAa,qBAAqB;",
6
+ "names": []
7
+ }
@@ -3,7 +3,7 @@ const require = __ragentsCreateRequire(import.meta.url);
3
3
  import {
4
4
  DISMISSED_ANSWER,
5
5
  askServiceToken
6
- } from "../../chunks/chunk-PDJO75SQ.js";
6
+ } from "../../chunks/chunk-YOV27MAR.js";
7
7
  export {
8
8
  DISMISSED_ANSWER,
9
9
  askServiceToken
@@ -3,7 +3,7 @@ const require = __ragentsCreateRequire(import.meta.url);
3
3
  import {
4
4
  DISMISSED_ANSWER,
5
5
  askServiceToken
6
- } from "./chunks/chunk-PDJO75SQ.js";
6
+ } from "./chunks/chunk-YOV27MAR.js";
7
7
 
8
8
  // server/index.ts
9
9
  import { pluginAsset } from "@ragents/host/plugin-support/plugin-folder.js";
@@ -20,13 +20,13 @@ import { defineOperation } from "@ragents/engine/src/rpc/contract";
20
20
  var askContracts = {
21
21
  answer: defineOperation({
22
22
  id: "ragents.ask.answer",
23
- description: "Eine R\xFCckfrage des Runs beantworten oder verwerfen. Rechte: runs.read und runs.write.",
23
+ description: "Answer or dismiss a question of the run. Rights: runs.read and runs.write.",
24
24
  rights: ["runs.read", "runs.write"],
25
25
  input: Type.Object({
26
- runId: Type.String({ minLength: 1, maxLength: 64, description: "Kennung des Runs" }),
27
- actionId: Type.String({ minLength: 1, maxLength: 80, description: "Kennung der Frage" }),
28
- answer: Type.Optional(Type.String({ description: "Die Antwort des Benutzers" })),
29
- dismiss: Type.Optional(Type.Boolean({ description: "true verwirft die Frage ohne Antwort" }))
26
+ runId: Type.String({ minLength: 1, maxLength: 64, description: "Run id" }),
27
+ actionId: Type.String({ minLength: 1, maxLength: 80, description: "Question id" }),
28
+ answer: Type.Optional(Type.String({ description: "The user's answer" })),
29
+ dismiss: Type.Optional(Type.Boolean({ description: "true dismisses the question without an answer" }))
30
30
  }, { additionalProperties: false }),
31
31
  result: Type.Null()
32
32
  })
@@ -35,7 +35,7 @@ var askContracts = {
35
35
  // server/answer-method.ts
36
36
  var createAnswerMethod = (service, ensureSession) => implement(askContracts.answer, ({ runId, actionId, answer, dismiss }) => {
37
37
  if (dismiss !== true && (typeof answer !== "string" || answer.trim() === "")) {
38
- throw new DomainError("answer-missing", "answer ist erforderlich, wenn nicht verworfen wird", 400);
38
+ throw new DomainError("answer-missing", "answer is required unless the question is dismissed", 400);
39
39
  }
40
40
  ensureSession(runId);
41
41
  service.answer(runId, actionId, { ...answer !== void 0 ? { answer } : {}, ...dismiss !== void 0 ? { dismiss } : {} });
@@ -79,7 +79,7 @@ var RuntimeAskService = class {
79
79
  #waiters = /* @__PURE__ */ new Map();
80
80
  #aborting = /* @__PURE__ */ new Set();
81
81
  bind(runtime) {
82
- if (this.#runtime) throw new Error("Der Ask-Service wurde bereits an eine Runtime gebunden");
82
+ if (this.#runtime) throw new Error("The ask service is already bound to a runtime");
83
83
  this.#runtime = runtime;
84
84
  runtime.subscribe((events) => this.#onJournal(events));
85
85
  }
@@ -96,7 +96,7 @@ var RuntimeAskService = class {
96
96
  title: request.question,
97
97
  description: request.description,
98
98
  parameters: request.parameters,
99
- input: { label: "Antwort", placeholder: null, required: true },
99
+ input: { label: "Answer", placeholder: null, required: true },
100
100
  payload: {
101
101
  question: request.question,
102
102
  options: [...request.options],
@@ -106,7 +106,7 @@ var RuntimeAskService = class {
106
106
  });
107
107
  const proposed = runtime.events(call.runId).find((event) => event.type === "action.proposed" && event.commandId === call.commandId);
108
108
  if (proposed?.type !== "action.proposed") {
109
- throw new Error(`Die Frage von ${call.agentId} wurde nicht im Journal von ${call.runId} angelegt`);
109
+ throw new Error(`The question from ${call.agentId} was not created in the journal of ${call.runId}`);
110
110
  }
111
111
  return this.#awaitAnswer(call.runId, proposed.payload.actionId, call.turnId ? call.agentId : null, signal);
112
112
  }
@@ -115,7 +115,7 @@ var RuntimeAskService = class {
115
115
  const state = runtime.state(runId);
116
116
  const action = state.actions.get(actionId);
117
117
  if (!action || action.owner !== ASK_PLUGIN_ID) {
118
- throw new DomainError2("question-not-found", `Frage ${actionId} existiert nicht in Run ${runId}.`, 404);
118
+ throw new DomainError2("question-not-found", `Question ${actionId} does not exist in run ${runId}.`, 404);
119
119
  }
120
120
  runtime.resolveAction(
121
121
  { actorId: state.ownerId, commandId: `ask-answer:${actionId}:${randomUUID()}` },
@@ -155,7 +155,7 @@ var RuntimeAskService = class {
155
155
  #awaitAnswer(runId, actionId, blockedActorId, signal) {
156
156
  const runtime = this.#requireRuntime();
157
157
  const action = runtime.state(runId).actions.get(actionId);
158
- if (!action) throw new Error(`Frage ${actionId} existiert nicht in Run ${runId}`);
158
+ if (!action) throw new Error(`Question ${actionId} does not exist in run ${runId}`);
159
159
  const settled = resolvedAnswerOf(action);
160
160
  if (settled !== null) return Promise.resolve(settled);
161
161
  return new Promise((resolve, reject) => {
@@ -173,7 +173,7 @@ var RuntimeAskService = class {
173
173
  { decision: "dismissed", result: null }
174
174
  );
175
175
  }
176
- reject(new Error("Das Warten auf die Antwort wurde abgebrochen."));
176
+ reject(new Error("Waiting for the answer was cancelled."));
177
177
  } catch (error) {
178
178
  reject(error);
179
179
  } finally {
@@ -234,16 +234,16 @@ var RuntimeAskService = class {
234
234
  runId,
235
235
  {
236
236
  actorId: recipientId,
237
- content: `Antwort auf ${recipientId === action.askedBy ? "deine Frage" : "die Frage"}: ${action.title}
238
- Antwort: ${answer}`
237
+ content: `Answer to ${recipientId === action.askedBy ? "your question" : "the question"}: ${action.title}
238
+ Answer: ${answer}`
239
239
  }
240
240
  );
241
241
  } catch (error) {
242
- console.error(`Antwort auf Frage ${actionId} konnte nicht als Input eingereiht werden: ${error instanceof Error ? error.message : String(error)}`);
242
+ console.error(`Answer to question ${actionId} could not be enqueued as input: ${error instanceof Error ? error.message : String(error)}`);
243
243
  }
244
244
  }
245
245
  #requireRuntime() {
246
- if (!this.#runtime) throw new Error("Der Ask-Service ist noch nicht an die Runtime gebunden");
246
+ if (!this.#runtime) throw new Error("The ask service is not bound to the runtime yet");
247
247
  return this.#runtime;
248
248
  }
249
249
  };
@@ -258,16 +258,16 @@ import { defineRunFunction } from "@ragents/engine";
258
258
  import { facesOperator } from "@ragents/host/plugin-support/tool-availability.js";
259
259
  var askToolMetadata = {
260
260
  name: "ask_user",
261
- label: "R\xFCckfrage",
262
- description: "Holt eine n\xF6tige Benutzerentscheidung mit Antwortoptionen ein und wartet auf die Antwort.",
263
- longDescription: "Nutze dieses Werkzeug immer, wenn du eine Entscheidung des Benutzers brauchst (z.B. Auswahl eines Branches oder eines Zeitraums), statt die Frage nur als Text zu stellen. Mit multi=true darf der Benutzer mehrere Optionen w\xE4hlen; die Antwort ist dann mit '; ' verbunden. Der Benutzer kann statt einer Option auch immer frei antworten - rechne also damit, dass die Antwort beliebiger Text sein kann."
261
+ label: "Question",
262
+ description: "Asks the user for a required decision with answer options and waits for the answer.",
263
+ longDescription: "Always use this tool when you need a decision from the user (e.g. choosing a branch or a time range), instead of only asking the question as text. With multi=true the user may choose several options; the answer is then joined with '; '. Instead of choosing an option, the user can always answer freely - so expect the answer to be arbitrary text."
264
264
  };
265
265
  var createAskTool = (service) => defineRunFunction({
266
266
  ...askToolMetadata,
267
267
  schema: Type2.Object({
268
- question: Type2.String({ description: "Die Frage an den Benutzer, kurz und konkret" }),
269
- options: Type2.Array(Type2.String(), { description: "Antwortoptionen (2 bis 6 St\xFCck)" }),
270
- multi: Type2.Optional(Type2.Boolean({ description: "true = Mehrfachauswahl erlaubt" }))
268
+ question: Type2.String({ description: "The question to the user, short and concrete" }),
269
+ options: Type2.Array(Type2.String(), { description: "Answer options (2 to 6)" }),
270
+ multi: Type2.Optional(Type2.Boolean({ description: "true = multiple choice allowed" }))
271
271
  }),
272
272
  resultSchema: Type2.String(),
273
273
  available: facesOperator,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.ask/server/index.ts", "../../../plugins/ragents.ask/server/answer-method.ts", "../../../plugins/ragents.ask/contract.ts", "../../../plugins/ragents.ask/server/ask-service.ts", "../../../plugins/ragents.ask/ask-payload.ts", "../../../plugins/ragents.ask/server/tool-contributor.ts", "../../../plugins/ragents.ask/server/ask-tool.ts"],
4
- "sourcesContent": ["import type { RAgentsPlugin } from \"@ragents/engine\";\nimport { pluginAsset } from \"@ragents/host/plugin-support/plugin-folder.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { handlebarsPrompt } from \"@ragents/host/plugin-support/prompt.js\";\nimport { runGuardToken } from \"@ragents/host/ragents/host-services.js\";\nimport { runtimeBridgeToken } from \"@ragents/host/ragents/runtime-bridge.js\";\nimport { createAnswerMethod } from \"./answer-method.js\";\nimport { RuntimeAskService } from \"./ask-service.js\";\nimport { askServiceToken } from \"./contract.js\";\nimport { createAskToolContributor } from \"./tool-contributor.js\";\n\nconst askPlugin: RAgentsPlugin = {\n manifest: { id: \"ragents.ask\" },\n register: (host) => {\n const service = new RuntimeAskService();\n host.provide(askServiceToken, service);\n host.provide(runtimeBridgeToken, { bind: (runtime) => service.bind(runtime) });\n host.prompts(handlebarsPrompt(\"ragents.ask.prompt\", 480, pluginAsset(\"ragents.ask\", \"ask.hbs\")));\n host.functions(createAskToolContributor(service));\n host.methods(createAnswerMethod(service, host.service(runGuardToken)));\n },\n};\n\nexport const plugin: PluginModule = { create: () => askPlugin };\n", "import { DomainError, implement, type MethodContribution } from \"@ragents/engine\";\nimport { askContracts } from \"../contract.js\";\nimport type { RuntimeAskService } from \"./ask-service.js\";\n\nexport const createAnswerMethod = (\n service: RuntimeAskService,\n ensureSession: (runId: string) => void,\n): MethodContribution => implement(askContracts.answer, ({ runId, actionId, answer, dismiss }) => {\n if (dismiss !== true && (typeof answer !== \"string\" || answer.trim() === \"\")) {\n throw new DomainError(\"answer-missing\", \"answer ist erforderlich, wenn nicht verworfen wird\", 400);\n }\n ensureSession(runId);\n service.answer(runId, actionId, { ...(answer !== undefined ? { answer } : {}), ...(dismiss !== undefined ? { dismiss } : {}) });\n return null;\n});\n", "import { Type } from \"typebox\";\nimport { defineOperation } from \"@ragents/engine/src/rpc/contract\";\n\nexport const askContracts = {\n answer: defineOperation({\n id: \"ragents.ask.answer\",\n description: \"Eine R\u00FCckfrage des Runs beantworten oder verwerfen. Rechte: runs.read und runs.write.\",\n rights: [\"runs.read\", \"runs.write\"],\n input: Type.Object({\n runId: Type.String({ minLength: 1, maxLength: 64, description: \"Kennung des Runs\" }),\n actionId: Type.String({ minLength: 1, maxLength: 80, description: \"Kennung der Frage\" }),\n answer: Type.Optional(Type.String({ description: \"Die Antwort des Benutzers\" })),\n dismiss: Type.Optional(Type.Boolean({ description: \"true verwirft die Frage ohne Antwort\" })),\n }, { additionalProperties: false }),\n result: Type.Null(),\n }),\n};\n", "import { randomUUID } from \"node:crypto\";\nimport {\n DomainError,\n type Action,\n type CommandContext,\n type JournalEvent,\n type JsonValue,\n type Orchestration,\n} from \"@ragents/engine\";\nimport { askPayloadOf, ASK_PLUGIN_ID, SUPERSEDED_ANSWER, supersedingInputOf } from \"../ask-payload.js\";\nimport { DISMISSED_ANSWER, type AskCall, type AskRequest, type AskService } from \"./contract.js\";\n\nconst answerOf = (decision: \"approved\" | \"dismissed\", result: unknown): string =>\n decision !== \"approved\"\n ? supersedingInputOf(result) === undefined ? DISMISSED_ANSWER : SUPERSEDED_ANSWER\n : typeof result === \"string\" ? result : result === null || result === undefined ? \"\" : JSON.stringify(result);\n\nconst resolvedAnswerOf = (action: Action): string | null =>\n action.status === \"pending\" ? null : answerOf(action.status, action.result);\n\nconst humanInputPendingFor = (runtime: Orchestration, runId: string, actorId: string): boolean =>\n [...runtime.state(runId).inputs.values()].some((input) =>\n input.actorId === actorId && input.origin === \"human\" && input.lifecycle.kind === \"pending\");\n\ninterface Waiter {\n runId: string;\n /** The actor whose running turn waits for the answer; null for a question asked outside a turn. */\n blockedActorId: string | null;\n settle: (answer: string) => void;\n}\n\nexport class RuntimeAskService implements AskService {\n #runtime: Orchestration | undefined;\n readonly #waiters = new Map<string, Waiter>();\n readonly #aborting = new Set<string>();\n\n bind(runtime: Orchestration): void {\n if (this.#runtime) throw new Error(\"Der Ask-Service wurde bereits an eine Runtime gebunden\");\n this.#runtime = runtime;\n runtime.subscribe((events) => this.#onJournal(events));\n }\n\n ask(call: AskCall, request: AskRequest, signal: AbortSignal | undefined): Promise<string> {\n const runtime = this.#requireRuntime();\n if (call.turnId && humanInputPendingFor(runtime, call.runId, call.agentId)) return Promise.resolve(SUPERSEDED_ANSWER);\n const context: CommandContext = {\n actorId: call.agentId,\n commandId: call.commandId,\n ...(call.turnId ? { turnId: call.turnId, correlationId: call.turnId, causationId: call.turnId } : {}),\n };\n runtime.proposeAction(context, call.runId, {\n owner: ASK_PLUGIN_ID,\n title: request.question,\n description: request.description,\n parameters: request.parameters,\n input: { label: \"Antwort\", placeholder: null, required: true },\n payload: {\n question: request.question,\n options: [...request.options],\n multi: request.multi === true,\n ...(request.recipient ? { recipient: request.recipient } : {}),\n },\n });\n const proposed = runtime.events(call.runId).find((event) =>\n event.type === \"action.proposed\" && event.commandId === call.commandId);\n if (proposed?.type !== \"action.proposed\") {\n throw new Error(`Die Frage von ${call.agentId} wurde nicht im Journal von ${call.runId} angelegt`);\n }\n return this.#awaitAnswer(call.runId, proposed.payload.actionId, call.turnId ? call.agentId : null, signal);\n }\n\n answer(runId: string, actionId: string, input: { answer?: string; dismiss?: boolean }): void {\n const runtime = this.#requireRuntime();\n const state = runtime.state(runId);\n const action = state.actions.get(actionId);\n if (!action || action.owner !== ASK_PLUGIN_ID) {\n throw new DomainError(\"question-not-found\", `Frage ${actionId} existiert nicht in Run ${runId}.`, 404);\n }\n runtime.resolveAction(\n { actorId: state.ownerId, commandId: `ask-answer:${actionId}:${randomUUID()}` },\n runId,\n actionId,\n input.dismiss === true\n ? { decision: \"dismissed\", result: null }\n : { decision: \"approved\", result: input.answer ?? null },\n );\n }\n\n withdraw(runId: string, actionId: string): void {\n this.#dismiss(runId, actionId, \"ask-withdraw\", null, DISMISSED_ANSWER);\n }\n\n #supersede(runId: string, actionId: string, inputId: string): void {\n try {\n this.#dismiss(runId, actionId, \"ask-supersede\", { supersededBy: inputId }, SUPERSEDED_ANSWER);\n } catch (error) {\n console.error(`Question ${actionId} could not be closed for message ${inputId}: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n #dismiss(runId: string, actionId: string, commandPrefix: string, result: JsonValue, answer: string): void {\n const runtime = this.#requireRuntime();\n const state = runtime.state(runId);\n const action = state.actions.get(actionId);\n if (action?.owner !== ASK_PLUGIN_ID || action.status !== \"pending\") return;\n this.#aborting.add(actionId);\n try {\n runtime.resolveAction(\n { actorId: state.ownerId, commandId: `${commandPrefix}:${actionId}:${randomUUID()}` },\n runId,\n actionId,\n { decision: \"dismissed\", result },\n );\n } finally {\n this.#aborting.delete(actionId);\n }\n this.#waiters.get(actionId)?.settle(answer);\n }\n\n #awaitAnswer(runId: string, actionId: string, blockedActorId: string | null, signal: AbortSignal | undefined): Promise<string> {\n const runtime = this.#requireRuntime();\n const action = runtime.state(runId).actions.get(actionId);\n if (!action) throw new Error(`Frage ${actionId} existiert nicht in Run ${runId}`);\n const settled = resolvedAnswerOf(action);\n if (settled !== null) return Promise.resolve(settled);\n return new Promise<string>((resolve, reject) => {\n const abort = () => {\n this.#waiters.delete(actionId);\n this.#aborting.add(actionId);\n try {\n const state = runtime.state(runId);\n const pending = state.actions.get(actionId);\n if (pending?.status === \"pending\") {\n runtime.resolveAction(\n { actorId: state.ownerId, commandId: `ask-abort:${actionId}:${randomUUID()}` },\n runId,\n actionId,\n { decision: \"dismissed\", result: null },\n );\n }\n reject(new Error(\"Das Warten auf die Antwort wurde abgebrochen.\"));\n } catch (error) {\n reject(error);\n } finally {\n this.#aborting.delete(actionId);\n }\n };\n if (signal?.aborted) {\n abort();\n return;\n }\n signal?.addEventListener(\"abort\", abort, { once: true });\n this.#waiters.set(actionId, {\n runId,\n blockedActorId,\n settle: (answer) => {\n signal?.removeEventListener(\"abort\", abort);\n this.#waiters.delete(actionId);\n resolve(answer);\n },\n });\n });\n }\n\n #onJournal(events: JournalEvent[]): void {\n for (const event of events) {\n if (event.type === \"actor.input.enqueued\") {\n if (event.payload.origin !== \"human\") continue;\n const { actorId, inputId } = event.payload;\n for (const [actionId, waiter] of this.#waiters) {\n if (waiter.runId !== event.runId || waiter.blockedActorId !== actorId) continue;\n queueMicrotask(() => this.#supersede(event.runId, actionId, inputId));\n }\n continue;\n }\n if (event.type !== \"action.resolved\") continue;\n if (this.#aborting.has(event.payload.actionId)) continue;\n const resolved = this.#requireRuntime().state(event.runId).actions.get(event.payload.actionId);\n if (resolved?.owner !== ASK_PLUGIN_ID) continue;\n const answer = answerOf(event.payload.decision, event.payload.result);\n const waiter = this.#waiters.get(event.payload.actionId);\n if (waiter) {\n waiter.settle(answer);\n continue;\n }\n queueMicrotask(() => this.#enqueueAnswer(event.runId, event.payload.actionId, answer));\n }\n }\n\n #enqueueAnswer(runId: string, actionId: string, answer: string): void {\n try {\n const runtime = this.#requireRuntime();\n const state = runtime.state(runId);\n const action = state.actions.get(actionId);\n if (!action) return;\n const recipientId = askPayloadOf(action.payload)?.recipient ?? action.askedBy;\n const recipient = state.actors.get(recipientId);\n if (!recipient || recipient.kind === \"human\" || recipient.lifecycle.kind === \"stopped\") return;\n runtime.enqueueInput(\n { actorId: state.ownerId, commandId: `ask-input:${actionId}` },\n runId,\n {\n actorId: recipientId,\n content: `Antwort auf ${recipientId === action.askedBy ? \"deine Frage\" : \"die Frage\"}: ${action.title}\\nAntwort: ${answer}`,\n },\n );\n } catch (error) {\n console.error(`Antwort auf Frage ${actionId} konnte nicht als Input eingereiht werden: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n #requireRuntime(): Orchestration {\n if (!this.#runtime) throw new Error(\"Der Ask-Service ist noch nicht an die Runtime gebunden\");\n return this.#runtime;\n }\n}\n", "export const ASK_PLUGIN_ID = \"ragents.ask\";\n\n/** What the asking tool call gets when a person's message to the asker closes its question. */\nexport const SUPERSEDED_ANSWER = \"Not answered: the user sent a new message instead.\";\n\nexport interface AskPayload {\n question: string;\n options: string[];\n multi: boolean;\n /** Der Actor, f\u00FCr den die Frage steht, wenn der Eigent\u00FCmer des Runs sie au\u00DFerhalb eines Turns stellt. */\n recipient?: string;\n}\n\nconst stringArrayOf = (value: unknown): string[] | undefined =>\n Array.isArray(value) && value.every((entry) => typeof entry === \"string\") ? [...value] : undefined;\n\nexport const askPayloadOf = (payload: unknown): AskPayload | undefined => {\n if (typeof payload !== \"object\" || payload === null) return undefined;\n const candidate = payload as Partial<AskPayload>;\n const options = stringArrayOf(candidate.options);\n if (typeof candidate.question !== \"string\" || !options) return undefined;\n return {\n question: candidate.question,\n options,\n multi: candidate.multi === true,\n ...(typeof candidate.recipient === \"string\" ? { recipient: candidate.recipient } : {}),\n };\n};\n\nexport const supersedingInputOf = (result: unknown): string | undefined => {\n if (typeof result !== \"object\" || result === null) return undefined;\n const { supersededBy } = result as { supersededBy?: unknown };\n return typeof supersededBy === \"string\" ? supersededBy : undefined;\n};\n", "import type { ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport { facesOperator } from \"@ragents/host/plugin-support/tool-availability.js\";\nimport { askToolMetadata, createAskTool } from \"./ask-tool.js\";\nimport type { AskService } from \"./contract.js\";\n\nexport const createAskToolContributor = (service: AskService): ToolContributor => ({\n name: \"ragents.ask\",\n descriptors: [toolDescriptorFrom(askToolMetadata, facesOperator)],\n tools: () => [createAskTool(service)],\n});\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, type RunFunction } from \"@ragents/engine\";\nimport { facesOperator } from \"@ragents/host/plugin-support/tool-availability.js\";\nimport type { AskService } from \"./contract.js\";\n\nexport const askToolMetadata = {\n name: \"ask_user\",\n label: \"R\u00FCckfrage\",\n description: \"Holt eine n\u00F6tige Benutzerentscheidung mit Antwortoptionen ein und wartet auf die Antwort.\",\n longDescription: \"Nutze dieses Werkzeug immer, wenn du eine Entscheidung des Benutzers brauchst \"\n + \"(z.B. Auswahl eines Branches oder eines Zeitraums), statt die Frage nur als Text zu stellen. \"\n + \"Mit multi=true darf der Benutzer mehrere Optionen w\u00E4hlen; die Antwort ist dann mit '; ' verbunden. \"\n + \"Der Benutzer kann statt einer Option auch immer frei antworten - rechne also damit, \"\n + \"dass die Antwort beliebiger Text sein kann.\",\n} as const;\n\nexport const createAskTool = (service: AskService): RunFunction =>\n defineRunFunction({\n ...askToolMetadata,\n schema: Type.Object({\n question: Type.String({ description: \"Die Frage an den Benutzer, kurz und konkret\" }),\n options: Type.Array(Type.String(), { description: \"Antwortoptionen (2 bis 6 St\u00FCck)\" }),\n multi: Type.Optional(Type.Boolean({ description: \"true = Mehrfachauswahl erlaubt\" })),\n }),\n resultSchema: Type.String(),\n available: facesOperator,\n executionMode: \"sequential\",\n run: (scope, toolCallId, input) =>\n service.ask(\n {\n runId: scope.caller.runId,\n agentId: scope.caller.actorId,\n turnId: scope.caller.turnId,\n commandId: scope.context(toolCallId).commandId,\n },\n { question: input.question, options: input.options, multi: input.multi === true },\n scope.signal,\n ),\n });\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { RAgentsPlugin } from \"@ragents/engine\";\nimport { pluginAsset } from \"@ragents/host/plugin-support/plugin-folder.js\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { handlebarsPrompt } from \"@ragents/host/plugin-support/prompt.js\";\nimport { runGuardToken } from \"@ragents/host/ragents/host-services.js\";\nimport { runtimeBridgeToken } from \"@ragents/host/ragents/runtime-bridge.js\";\nimport { createAnswerMethod } from \"./answer-method.js\";\nimport { RuntimeAskService } from \"./ask-service.js\";\nimport { askServiceToken } from \"./contract.js\";\nimport { createAskToolContributor } from \"./tool-contributor.js\";\n\nconst askPlugin: RAgentsPlugin = {\n manifest: { id: \"ragents.ask\" },\n register: (host) => {\n const service = new RuntimeAskService();\n host.provide(askServiceToken, service);\n host.provide(runtimeBridgeToken, { bind: (runtime) => service.bind(runtime) });\n host.prompts(handlebarsPrompt(\"ragents.ask.prompt\", 480, pluginAsset(\"ragents.ask\", \"ask.hbs\")));\n host.functions(createAskToolContributor(service));\n host.methods(createAnswerMethod(service, host.service(runGuardToken)));\n },\n};\n\nexport const plugin: PluginModule = { create: () => askPlugin };\n", "import { DomainError, implement, type MethodContribution } from \"@ragents/engine\";\nimport { askContracts } from \"../contract.js\";\nimport type { RuntimeAskService } from \"./ask-service.js\";\n\nexport const createAnswerMethod = (\n service: RuntimeAskService,\n ensureSession: (runId: string) => void,\n): MethodContribution => implement(askContracts.answer, ({ runId, actionId, answer, dismiss }) => {\n if (dismiss !== true && (typeof answer !== \"string\" || answer.trim() === \"\")) {\n throw new DomainError(\"answer-missing\", \"answer is required unless the question is dismissed\", 400);\n }\n ensureSession(runId);\n service.answer(runId, actionId, { ...(answer !== undefined ? { answer } : {}), ...(dismiss !== undefined ? { dismiss } : {}) });\n return null;\n});\n", "import { Type } from \"typebox\";\nimport { defineOperation } from \"@ragents/engine/src/rpc/contract\";\n\nexport const askContracts = {\n answer: defineOperation({\n id: \"ragents.ask.answer\",\n description: \"Answer or dismiss a question of the run. Rights: runs.read and runs.write.\",\n rights: [\"runs.read\", \"runs.write\"],\n input: Type.Object({\n runId: Type.String({ minLength: 1, maxLength: 64, description: \"Run id\" }),\n actionId: Type.String({ minLength: 1, maxLength: 80, description: \"Question id\" }),\n answer: Type.Optional(Type.String({ description: \"The user's answer\" })),\n dismiss: Type.Optional(Type.Boolean({ description: \"true dismisses the question without an answer\" })),\n }, { additionalProperties: false }),\n result: Type.Null(),\n }),\n};\n", "import { randomUUID } from \"node:crypto\";\nimport {\n DomainError,\n type Action,\n type CommandContext,\n type JournalEvent,\n type JsonValue,\n type Orchestration,\n} from \"@ragents/engine\";\nimport { askPayloadOf, ASK_PLUGIN_ID, SUPERSEDED_ANSWER, supersedingInputOf } from \"../ask-payload.js\";\nimport { DISMISSED_ANSWER, type AskCall, type AskRequest, type AskService } from \"./contract.js\";\n\nconst answerOf = (decision: \"approved\" | \"dismissed\", result: unknown): string =>\n decision !== \"approved\"\n ? supersedingInputOf(result) === undefined ? DISMISSED_ANSWER : SUPERSEDED_ANSWER\n : typeof result === \"string\" ? result : result === null || result === undefined ? \"\" : JSON.stringify(result);\n\nconst resolvedAnswerOf = (action: Action): string | null =>\n action.status === \"pending\" ? null : answerOf(action.status, action.result);\n\nconst humanInputPendingFor = (runtime: Orchestration, runId: string, actorId: string): boolean =>\n [...runtime.state(runId).inputs.values()].some((input) =>\n input.actorId === actorId && input.origin === \"human\" && input.lifecycle.kind === \"pending\");\n\ninterface Waiter {\n runId: string;\n /** The actor whose running turn waits for the answer; null for a question asked outside a turn. */\n blockedActorId: string | null;\n settle: (answer: string) => void;\n}\n\nexport class RuntimeAskService implements AskService {\n #runtime: Orchestration | undefined;\n readonly #waiters = new Map<string, Waiter>();\n readonly #aborting = new Set<string>();\n\n bind(runtime: Orchestration): void {\n if (this.#runtime) throw new Error(\"The ask service is already bound to a runtime\");\n this.#runtime = runtime;\n runtime.subscribe((events) => this.#onJournal(events));\n }\n\n ask(call: AskCall, request: AskRequest, signal: AbortSignal | undefined): Promise<string> {\n const runtime = this.#requireRuntime();\n if (call.turnId && humanInputPendingFor(runtime, call.runId, call.agentId)) return Promise.resolve(SUPERSEDED_ANSWER);\n const context: CommandContext = {\n actorId: call.agentId,\n commandId: call.commandId,\n ...(call.turnId ? { turnId: call.turnId, correlationId: call.turnId, causationId: call.turnId } : {}),\n };\n runtime.proposeAction(context, call.runId, {\n owner: ASK_PLUGIN_ID,\n title: request.question,\n description: request.description,\n parameters: request.parameters,\n input: { label: \"Answer\", placeholder: null, required: true },\n payload: {\n question: request.question,\n options: [...request.options],\n multi: request.multi === true,\n ...(request.recipient ? { recipient: request.recipient } : {}),\n },\n });\n const proposed = runtime.events(call.runId).find((event) =>\n event.type === \"action.proposed\" && event.commandId === call.commandId);\n if (proposed?.type !== \"action.proposed\") {\n throw new Error(`The question from ${call.agentId} was not created in the journal of ${call.runId}`);\n }\n return this.#awaitAnswer(call.runId, proposed.payload.actionId, call.turnId ? call.agentId : null, signal);\n }\n\n answer(runId: string, actionId: string, input: { answer?: string; dismiss?: boolean }): void {\n const runtime = this.#requireRuntime();\n const state = runtime.state(runId);\n const action = state.actions.get(actionId);\n if (!action || action.owner !== ASK_PLUGIN_ID) {\n throw new DomainError(\"question-not-found\", `Question ${actionId} does not exist in run ${runId}.`, 404);\n }\n runtime.resolveAction(\n { actorId: state.ownerId, commandId: `ask-answer:${actionId}:${randomUUID()}` },\n runId,\n actionId,\n input.dismiss === true\n ? { decision: \"dismissed\", result: null }\n : { decision: \"approved\", result: input.answer ?? null },\n );\n }\n\n withdraw(runId: string, actionId: string): void {\n this.#dismiss(runId, actionId, \"ask-withdraw\", null, DISMISSED_ANSWER);\n }\n\n #supersede(runId: string, actionId: string, inputId: string): void {\n try {\n this.#dismiss(runId, actionId, \"ask-supersede\", { supersededBy: inputId }, SUPERSEDED_ANSWER);\n } catch (error) {\n console.error(`Question ${actionId} could not be closed for message ${inputId}: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n #dismiss(runId: string, actionId: string, commandPrefix: string, result: JsonValue, answer: string): void {\n const runtime = this.#requireRuntime();\n const state = runtime.state(runId);\n const action = state.actions.get(actionId);\n if (action?.owner !== ASK_PLUGIN_ID || action.status !== \"pending\") return;\n this.#aborting.add(actionId);\n try {\n runtime.resolveAction(\n { actorId: state.ownerId, commandId: `${commandPrefix}:${actionId}:${randomUUID()}` },\n runId,\n actionId,\n { decision: \"dismissed\", result },\n );\n } finally {\n this.#aborting.delete(actionId);\n }\n this.#waiters.get(actionId)?.settle(answer);\n }\n\n #awaitAnswer(runId: string, actionId: string, blockedActorId: string | null, signal: AbortSignal | undefined): Promise<string> {\n const runtime = this.#requireRuntime();\n const action = runtime.state(runId).actions.get(actionId);\n if (!action) throw new Error(`Question ${actionId} does not exist in run ${runId}`);\n const settled = resolvedAnswerOf(action);\n if (settled !== null) return Promise.resolve(settled);\n return new Promise<string>((resolve, reject) => {\n const abort = () => {\n this.#waiters.delete(actionId);\n this.#aborting.add(actionId);\n try {\n const state = runtime.state(runId);\n const pending = state.actions.get(actionId);\n if (pending?.status === \"pending\") {\n runtime.resolveAction(\n { actorId: state.ownerId, commandId: `ask-abort:${actionId}:${randomUUID()}` },\n runId,\n actionId,\n { decision: \"dismissed\", result: null },\n );\n }\n reject(new Error(\"Waiting for the answer was cancelled.\"));\n } catch (error) {\n reject(error);\n } finally {\n this.#aborting.delete(actionId);\n }\n };\n if (signal?.aborted) {\n abort();\n return;\n }\n signal?.addEventListener(\"abort\", abort, { once: true });\n this.#waiters.set(actionId, {\n runId,\n blockedActorId,\n settle: (answer) => {\n signal?.removeEventListener(\"abort\", abort);\n this.#waiters.delete(actionId);\n resolve(answer);\n },\n });\n });\n }\n\n #onJournal(events: JournalEvent[]): void {\n for (const event of events) {\n if (event.type === \"actor.input.enqueued\") {\n if (event.payload.origin !== \"human\") continue;\n const { actorId, inputId } = event.payload;\n for (const [actionId, waiter] of this.#waiters) {\n if (waiter.runId !== event.runId || waiter.blockedActorId !== actorId) continue;\n queueMicrotask(() => this.#supersede(event.runId, actionId, inputId));\n }\n continue;\n }\n if (event.type !== \"action.resolved\") continue;\n if (this.#aborting.has(event.payload.actionId)) continue;\n const resolved = this.#requireRuntime().state(event.runId).actions.get(event.payload.actionId);\n if (resolved?.owner !== ASK_PLUGIN_ID) continue;\n const answer = answerOf(event.payload.decision, event.payload.result);\n const waiter = this.#waiters.get(event.payload.actionId);\n if (waiter) {\n waiter.settle(answer);\n continue;\n }\n queueMicrotask(() => this.#enqueueAnswer(event.runId, event.payload.actionId, answer));\n }\n }\n\n #enqueueAnswer(runId: string, actionId: string, answer: string): void {\n try {\n const runtime = this.#requireRuntime();\n const state = runtime.state(runId);\n const action = state.actions.get(actionId);\n if (!action) return;\n const recipientId = askPayloadOf(action.payload)?.recipient ?? action.askedBy;\n const recipient = state.actors.get(recipientId);\n if (!recipient || recipient.kind === \"human\" || recipient.lifecycle.kind === \"stopped\") return;\n runtime.enqueueInput(\n { actorId: state.ownerId, commandId: `ask-input:${actionId}` },\n runId,\n {\n actorId: recipientId,\n content: `Answer to ${recipientId === action.askedBy ? \"your question\" : \"the question\"}: ${action.title}\\nAnswer: ${answer}`,\n },\n );\n } catch (error) {\n console.error(`Answer to question ${actionId} could not be enqueued as input: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n #requireRuntime(): Orchestration {\n if (!this.#runtime) throw new Error(\"The ask service is not bound to the runtime yet\");\n return this.#runtime;\n }\n}\n", "export const ASK_PLUGIN_ID = \"ragents.ask\";\n\n/** What the asking tool call gets when a person's message to the asker closes its question. */\nexport const SUPERSEDED_ANSWER = \"Not answered: the user sent a new message instead.\";\n\nexport interface AskPayload {\n question: string;\n options: string[];\n multi: boolean;\n /** The actor the question stands for when the run owner asks it outside a turn. */\n recipient?: string;\n}\n\nconst stringArrayOf = (value: unknown): string[] | undefined =>\n Array.isArray(value) && value.every((entry) => typeof entry === \"string\") ? [...value] : undefined;\n\nexport const askPayloadOf = (payload: unknown): AskPayload | undefined => {\n if (typeof payload !== \"object\" || payload === null) return undefined;\n const candidate = payload as Partial<AskPayload>;\n const options = stringArrayOf(candidate.options);\n if (typeof candidate.question !== \"string\" || !options) return undefined;\n return {\n question: candidate.question,\n options,\n multi: candidate.multi === true,\n ...(typeof candidate.recipient === \"string\" ? { recipient: candidate.recipient } : {}),\n };\n};\n\nexport const supersedingInputOf = (result: unknown): string | undefined => {\n if (typeof result !== \"object\" || result === null) return undefined;\n const { supersededBy } = result as { supersededBy?: unknown };\n return typeof supersededBy === \"string\" ? supersededBy : undefined;\n};\n", "import type { ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport { facesOperator } from \"@ragents/host/plugin-support/tool-availability.js\";\nimport { askToolMetadata, createAskTool } from \"./ask-tool.js\";\nimport type { AskService } from \"./contract.js\";\n\nexport const createAskToolContributor = (service: AskService): ToolContributor => ({\n name: \"ragents.ask\",\n descriptors: [toolDescriptorFrom(askToolMetadata, facesOperator)],\n tools: () => [createAskTool(service)],\n});\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, type RunFunction } from \"@ragents/engine\";\nimport { facesOperator } from \"@ragents/host/plugin-support/tool-availability.js\";\nimport type { AskService } from \"./contract.js\";\n\nexport const askToolMetadata = {\n name: \"ask_user\",\n label: \"Question\",\n description: \"Asks the user for a required decision with answer options and waits for the answer.\",\n longDescription: \"Always use this tool when you need a decision from the user \"\n + \"(e.g. choosing a branch or a time range), instead of only asking the question as text. \"\n + \"With multi=true the user may choose several options; the answer is then joined with '; '. \"\n + \"Instead of choosing an option, the user can always answer freely - so expect \"\n + \"the answer to be arbitrary text.\",\n} as const;\n\nexport const createAskTool = (service: AskService): RunFunction =>\n defineRunFunction({\n ...askToolMetadata,\n schema: Type.Object({\n question: Type.String({ description: \"The question to the user, short and concrete\" }),\n options: Type.Array(Type.String(), { description: \"Answer options (2 to 6)\" }),\n multi: Type.Optional(Type.Boolean({ description: \"true = multiple choice allowed\" })),\n }),\n resultSchema: Type.String(),\n available: facesOperator,\n executionMode: \"sequential\",\n run: (scope, toolCallId, input) =>\n service.ask(\n {\n runId: scope.caller.runId,\n agentId: scope.caller.actorId,\n turnId: scope.caller.turnId,\n commandId: scope.context(toolCallId).commandId,\n },\n { question: input.question, options: input.options, multi: input.multi === true },\n scope.signal,\n ),\n });\n"],
5
+ "mappings": ";;;;;;;;AACA,SAAS,mBAAmB;AAE5B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,0BAA0B;;;ACLnC,SAAS,aAAa,iBAA0C;;;ACAhE,SAAS,YAAY;AACrB,SAAS,uBAAuB;AAEzB,IAAM,eAAe;AAAA,EAC1B,QAAQ,gBAAgB;AAAA,IACtB,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,QAAQ,CAAC,aAAa,YAAY;AAAA,IAClC,OAAO,KAAK,OAAO;AAAA,MACjB,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,aAAa,SAAS,CAAC;AAAA,MACzE,UAAU,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,aAAa,cAAc,CAAC;AAAA,MACjF,QAAQ,KAAK,SAAS,KAAK,OAAO,EAAE,aAAa,oBAAoB,CAAC,CAAC;AAAA,MACvE,SAAS,KAAK,SAAS,KAAK,QAAQ,EAAE,aAAa,gDAAgD,CAAC,CAAC;AAAA,IACvG,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAAA,IAClC,QAAQ,KAAK,KAAK;AAAA,EACpB,CAAC;AACH;;;ADZO,IAAM,qBAAqB,CAChC,SACA,kBACuB,UAAU,aAAa,QAAQ,CAAC,EAAE,OAAO,UAAU,QAAQ,QAAQ,MAAM;AAChG,MAAI,YAAY,SAAS,OAAO,WAAW,YAAY,OAAO,KAAK,MAAM,KAAK;AAC5E,UAAM,IAAI,YAAY,kBAAkB,uDAAuD,GAAG;AAAA,EACpG;AACA,gBAAc,KAAK;AACnB,UAAQ,OAAO,OAAO,UAAU,EAAE,GAAI,WAAW,SAAY,EAAE,OAAO,IAAI,CAAC,GAAI,GAAI,YAAY,SAAY,EAAE,QAAQ,IAAI,CAAC,EAAG,CAAC;AAC9H,SAAO;AACT,CAAC;;;AEdD,SAAS,kBAAkB;AAC3B;AAAA,EACE,eAAAA;AAAA,OAMK;;;ACRA,IAAM,gBAAgB;AAGtB,IAAM,oBAAoB;AAUjC,IAAM,gBAAgB,CAAC,UACrB,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,CAAC,UAAU,OAAO,UAAU,QAAQ,IAAI,CAAC,GAAG,KAAK,IAAI;AAEpF,IAAM,eAAe,CAAC,YAA6C;AACxE,MAAI,OAAO,YAAY,YAAY,YAAY,KAAM,QAAO;AAC5D,QAAM,YAAY;AAClB,QAAM,UAAU,cAAc,UAAU,OAAO;AAC/C,MAAI,OAAO,UAAU,aAAa,YAAY,CAAC,QAAS,QAAO;AAC/D,SAAO;AAAA,IACL,UAAU,UAAU;AAAA,IACpB;AAAA,IACA,OAAO,UAAU,UAAU;AAAA,IAC3B,GAAI,OAAO,UAAU,cAAc,WAAW,EAAE,WAAW,UAAU,UAAU,IAAI,CAAC;AAAA,EACtF;AACF;AAEO,IAAM,qBAAqB,CAAC,WAAwC;AACzE,MAAI,OAAO,WAAW,YAAY,WAAW,KAAM,QAAO;AAC1D,QAAM,EAAE,aAAa,IAAI;AACzB,SAAO,OAAO,iBAAiB,WAAW,eAAe;AAC3D;;;ADrBA,IAAM,WAAW,CAAC,UAAoC,WACpD,aAAa,aACT,mBAAmB,MAAM,MAAM,SAAY,mBAAmB,oBAC9D,OAAO,WAAW,WAAW,SAAS,WAAW,QAAQ,WAAW,SAAY,KAAK,KAAK,UAAU,MAAM;AAEhH,IAAM,mBAAmB,CAAC,WACxB,OAAO,WAAW,YAAY,OAAO,SAAS,OAAO,QAAQ,OAAO,MAAM;AAE5E,IAAM,uBAAuB,CAAC,SAAwB,OAAe,YACnE,CAAC,GAAG,QAAQ,MAAM,KAAK,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,UAC9C,MAAM,YAAY,WAAW,MAAM,WAAW,WAAW,MAAM,UAAU,SAAS,SAAS;AASxF,IAAM,oBAAN,MAA8C;AAAA,EACnD;AAAA,EACS,WAAW,oBAAI,IAAoB;AAAA,EACnC,YAAY,oBAAI,IAAY;AAAA,EAErC,KAAK,SAA8B;AACjC,QAAI,KAAK,SAAU,OAAM,IAAI,MAAM,+CAA+C;AAClF,SAAK,WAAW;AAChB,YAAQ,UAAU,CAAC,WAAW,KAAK,WAAW,MAAM,CAAC;AAAA,EACvD;AAAA,EAEA,IAAI,MAAe,SAAqB,QAAkD;AACxF,UAAM,UAAU,KAAK,gBAAgB;AACrC,QAAI,KAAK,UAAU,qBAAqB,SAAS,KAAK,OAAO,KAAK,OAAO,EAAG,QAAO,QAAQ,QAAQ,iBAAiB;AACpH,UAAM,UAA0B;AAAA,MAC9B,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,QAAQ,eAAe,KAAK,QAAQ,aAAa,KAAK,OAAO,IAAI,CAAC;AAAA,IACrG;AACA,YAAQ,cAAc,SAAS,KAAK,OAAO;AAAA,MACzC,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,MACpB,OAAO,EAAE,OAAO,UAAU,aAAa,MAAM,UAAU,KAAK;AAAA,MAC5D,SAAS;AAAA,QACP,UAAU,QAAQ;AAAA,QAClB,SAAS,CAAC,GAAG,QAAQ,OAAO;AAAA,QAC5B,OAAO,QAAQ,UAAU;AAAA,QACzB,GAAI,QAAQ,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,MAC9D;AAAA,IACF,CAAC;AACD,UAAM,WAAW,QAAQ,OAAO,KAAK,KAAK,EAAE,KAAK,CAAC,UAChD,MAAM,SAAS,qBAAqB,MAAM,cAAc,KAAK,SAAS;AACxE,QAAI,UAAU,SAAS,mBAAmB;AACxC,YAAM,IAAI,MAAM,qBAAqB,KAAK,OAAO,sCAAsC,KAAK,KAAK,EAAE;AAAA,IACrG;AACA,WAAO,KAAK,aAAa,KAAK,OAAO,SAAS,QAAQ,UAAU,KAAK,SAAS,KAAK,UAAU,MAAM,MAAM;AAAA,EAC3G;AAAA,EAEA,OAAO,OAAe,UAAkB,OAAqD;AAC3F,UAAM,UAAU,KAAK,gBAAgB;AACrC,UAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,UAAM,SAAS,MAAM,QAAQ,IAAI,QAAQ;AACzC,QAAI,CAAC,UAAU,OAAO,UAAU,eAAe;AAC7C,YAAM,IAAIC,aAAY,sBAAsB,YAAY,QAAQ,0BAA0B,KAAK,KAAK,GAAG;AAAA,IACzG;AACA,YAAQ;AAAA,MACN,EAAE,SAAS,MAAM,SAAS,WAAW,cAAc,QAAQ,IAAI,WAAW,CAAC,GAAG;AAAA,MAC9E;AAAA,MACA;AAAA,MACA,MAAM,YAAY,OACd,EAAE,UAAU,aAAa,QAAQ,KAAK,IACtC,EAAE,UAAU,YAAY,QAAQ,MAAM,UAAU,KAAK;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,SAAS,OAAe,UAAwB;AAC9C,SAAK,SAAS,OAAO,UAAU,gBAAgB,MAAM,gBAAgB;AAAA,EACvE;AAAA,EAEA,WAAW,OAAe,UAAkB,SAAuB;AACjE,QAAI;AACF,WAAK,SAAS,OAAO,UAAU,iBAAiB,EAAE,cAAc,QAAQ,GAAG,iBAAiB;AAAA,IAC9F,SAAS,OAAO;AACd,cAAQ,MAAM,YAAY,QAAQ,oCAAoC,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AAAA,IAC5I;AAAA,EACF;AAAA,EAEA,SAAS,OAAe,UAAkB,eAAuB,QAAmB,QAAsB;AACxG,UAAM,UAAU,KAAK,gBAAgB;AACrC,UAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,UAAM,SAAS,MAAM,QAAQ,IAAI,QAAQ;AACzC,QAAI,QAAQ,UAAU,iBAAiB,OAAO,WAAW,UAAW;AACpE,SAAK,UAAU,IAAI,QAAQ;AAC3B,QAAI;AACF,cAAQ;AAAA,QACN,EAAE,SAAS,MAAM,SAAS,WAAW,GAAG,aAAa,IAAI,QAAQ,IAAI,WAAW,CAAC,GAAG;AAAA,QACpF;AAAA,QACA;AAAA,QACA,EAAE,UAAU,aAAa,OAAO;AAAA,MAClC;AAAA,IACF,UAAE;AACA,WAAK,UAAU,OAAO,QAAQ;AAAA,IAChC;AACA,SAAK,SAAS,IAAI,QAAQ,GAAG,OAAO,MAAM;AAAA,EAC5C;AAAA,EAEA,aAAa,OAAe,UAAkB,gBAA+B,QAAkD;AAC7H,UAAM,UAAU,KAAK,gBAAgB;AACrC,UAAM,SAAS,QAAQ,MAAM,KAAK,EAAE,QAAQ,IAAI,QAAQ;AACxD,QAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,YAAY,QAAQ,0BAA0B,KAAK,EAAE;AAClF,UAAM,UAAU,iBAAiB,MAAM;AACvC,QAAI,YAAY,KAAM,QAAO,QAAQ,QAAQ,OAAO;AACpD,WAAO,IAAI,QAAgB,CAAC,SAAS,WAAW;AAC9C,YAAM,QAAQ,MAAM;AAClB,aAAK,SAAS,OAAO,QAAQ;AAC7B,aAAK,UAAU,IAAI,QAAQ;AAC3B,YAAI;AACF,gBAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,gBAAM,UAAU,MAAM,QAAQ,IAAI,QAAQ;AAC1C,cAAI,SAAS,WAAW,WAAW;AACjC,oBAAQ;AAAA,cACN,EAAE,SAAS,MAAM,SAAS,WAAW,aAAa,QAAQ,IAAI,WAAW,CAAC,GAAG;AAAA,cAC7E;AAAA,cACA;AAAA,cACA,EAAE,UAAU,aAAa,QAAQ,KAAK;AAAA,YACxC;AAAA,UACF;AACA,iBAAO,IAAI,MAAM,uCAAuC,CAAC;AAAA,QAC3D,SAAS,OAAO;AACd,iBAAO,KAAK;AAAA,QACd,UAAE;AACA,eAAK,UAAU,OAAO,QAAQ;AAAA,QAChC;AAAA,MACF;AACA,UAAI,QAAQ,SAAS;AACnB,cAAM;AACN;AAAA,MACF;AACA,cAAQ,iBAAiB,SAAS,OAAO,EAAE,MAAM,KAAK,CAAC;AACvD,WAAK,SAAS,IAAI,UAAU;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,QAAQ,CAAC,WAAW;AAClB,kBAAQ,oBAAoB,SAAS,KAAK;AAC1C,eAAK,SAAS,OAAO,QAAQ;AAC7B,kBAAQ,MAAM;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,QAA8B;AACvC,eAAW,SAAS,QAAQ;AAC1B,UAAI,MAAM,SAAS,wBAAwB;AACzC,YAAI,MAAM,QAAQ,WAAW,QAAS;AACtC,cAAM,EAAE,SAAS,QAAQ,IAAI,MAAM;AACnC,mBAAW,CAAC,UAAUC,OAAM,KAAK,KAAK,UAAU;AAC9C,cAAIA,QAAO,UAAU,MAAM,SAASA,QAAO,mBAAmB,QAAS;AACvE,yBAAe,MAAM,KAAK,WAAW,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,QACtE;AACA;AAAA,MACF;AACA,UAAI,MAAM,SAAS,kBAAmB;AACtC,UAAI,KAAK,UAAU,IAAI,MAAM,QAAQ,QAAQ,EAAG;AAChD,YAAM,WAAW,KAAK,gBAAgB,EAAE,MAAM,MAAM,KAAK,EAAE,QAAQ,IAAI,MAAM,QAAQ,QAAQ;AAC7F,UAAI,UAAU,UAAU,cAAe;AACvC,YAAM,SAAS,SAAS,MAAM,QAAQ,UAAU,MAAM,QAAQ,MAAM;AACpE,YAAM,SAAS,KAAK,SAAS,IAAI,MAAM,QAAQ,QAAQ;AACvD,UAAI,QAAQ;AACV,eAAO,OAAO,MAAM;AACpB;AAAA,MACF;AACA,qBAAe,MAAM,KAAK,eAAe,MAAM,OAAO,MAAM,QAAQ,UAAU,MAAM,CAAC;AAAA,IACvF;AAAA,EACF;AAAA,EAEA,eAAe,OAAe,UAAkB,QAAsB;AACpE,QAAI;AACF,YAAM,UAAU,KAAK,gBAAgB;AACrC,YAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,YAAM,SAAS,MAAM,QAAQ,IAAI,QAAQ;AACzC,UAAI,CAAC,OAAQ;AACb,YAAM,cAAc,aAAa,OAAO,OAAO,GAAG,aAAa,OAAO;AACtE,YAAM,YAAY,MAAM,OAAO,IAAI,WAAW;AAC9C,UAAI,CAAC,aAAa,UAAU,SAAS,WAAW,UAAU,UAAU,SAAS,UAAW;AACxF,cAAQ;AAAA,QACN,EAAE,SAAS,MAAM,SAAS,WAAW,aAAa,QAAQ,GAAG;AAAA,QAC7D;AAAA,QACA;AAAA,UACE,SAAS;AAAA,UACT,SAAS,aAAa,gBAAgB,OAAO,UAAU,kBAAkB,cAAc,KAAK,OAAO,KAAK;AAAA,UAAa,MAAM;AAAA,QAC7H;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,sBAAsB,QAAQ,oCAAoC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AAAA,IAC1I;AAAA,EACF;AAAA,EAEA,kBAAiC;AAC/B,QAAI,CAAC,KAAK,SAAU,OAAM,IAAI,MAAM,iDAAiD;AACrF,WAAO,KAAK;AAAA,EACd;AACF;;;AEtNA,SAAS,0BAA0B;AACnC,SAAS,iBAAAC,sBAAqB;;;ACF9B,SAAS,QAAAC,aAAY;AACrB,SAAS,yBAA2C;AACpD,SAAS,qBAAqB;AAGvB,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,iBAAiB;AAKnB;AAEO,IAAM,gBAAgB,CAAC,YAC5B,kBAAkB;AAAA,EAChB,GAAG;AAAA,EACH,QAAQA,MAAK,OAAO;AAAA,IAClB,UAAUA,MAAK,OAAO,EAAE,aAAa,+CAA+C,CAAC;AAAA,IACrF,SAASA,MAAK,MAAMA,MAAK,OAAO,GAAG,EAAE,aAAa,0BAA0B,CAAC;AAAA,IAC7E,OAAOA,MAAK,SAASA,MAAK,QAAQ,EAAE,aAAa,iCAAiC,CAAC,CAAC;AAAA,EACtF,CAAC;AAAA,EACD,cAAcA,MAAK,OAAO;AAAA,EAC1B,WAAW;AAAA,EACX,eAAe;AAAA,EACf,KAAK,CAAC,OAAO,YAAY,UACvB,QAAQ;AAAA,IACN;AAAA,MACE,OAAO,MAAM,OAAO;AAAA,MACpB,SAAS,MAAM,OAAO;AAAA,MACtB,QAAQ,MAAM,OAAO;AAAA,MACrB,WAAW,MAAM,QAAQ,UAAU,EAAE;AAAA,IACvC;AAAA,IACA,EAAE,UAAU,MAAM,UAAU,SAAS,MAAM,SAAS,OAAO,MAAM,UAAU,KAAK;AAAA,IAChF,MAAM;AAAA,EACR;AACJ,CAAC;;;ADhCI,IAAM,2BAA2B,CAAC,aAA0C;AAAA,EACjF,MAAM;AAAA,EACN,aAAa,CAAC,mBAAmB,iBAAiBC,cAAa,CAAC;AAAA,EAChE,OAAO,MAAM,CAAC,cAAc,OAAO,CAAC;AACtC;;;ALCA,IAAM,YAA2B;AAAA,EAC/B,UAAU,EAAE,IAAI,cAAc;AAAA,EAC9B,UAAU,CAAC,SAAS;AAClB,UAAM,UAAU,IAAI,kBAAkB;AACtC,SAAK,QAAQ,iBAAiB,OAAO;AACrC,SAAK,QAAQ,oBAAoB,EAAE,MAAM,CAAC,YAAY,QAAQ,KAAK,OAAO,EAAE,CAAC;AAC7E,SAAK,QAAQ,iBAAiB,sBAAsB,KAAK,YAAY,eAAe,SAAS,CAAC,CAAC;AAC/F,SAAK,UAAU,yBAAyB,OAAO,CAAC;AAChD,SAAK,QAAQ,mBAAmB,SAAS,KAAK,QAAQ,aAAa,CAAC,CAAC;AAAA,EACvE;AACF;AAEO,IAAM,SAAuB,EAAE,QAAQ,MAAM,UAAU;",
6
6
  "names": ["DomainError", "DomainError", "waiter", "facesOperator", "Type", "facesOperator"]
7
7
  }
@@ -1,2 +1,2 @@
1
1
  var s="ragents.ask",r="Not answered: the user sent a new message instead.",i=n=>Array.isArray(n)&&n.every(e=>typeof e=="string")?[...n]:void 0,o=n=>{if(typeof n!="object"||n===null)return;let e=n,t=i(e.options);if(!(typeof e.question!="string"||!t))return{question:e.question,options:t,multi:e.multi===!0,...typeof e.recipient=="string"?{recipient:e.recipient}:{}}},u=n=>{if(typeof n!="object"||n===null)return;let{supersededBy:e}=n;return typeof e=="string"?e:void 0};export{s as a,r as b,o as c,u as d};
2
- //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-WFN4374U.js.map
2
+ //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../plugins/ragents.ask/ask-payload.ts"],
4
+ "sourcesContent": ["export const ASK_PLUGIN_ID = \"ragents.ask\";\n\n/** What the asking tool call gets when a person's message to the asker closes its question. */\nexport const SUPERSEDED_ANSWER = \"Not answered: the user sent a new message instead.\";\n\nexport interface AskPayload {\n question: string;\n options: string[];\n multi: boolean;\n /** The actor the question stands for when the run owner asks it outside a turn. */\n recipient?: string;\n}\n\nconst stringArrayOf = (value: unknown): string[] | undefined =>\n Array.isArray(value) && value.every((entry) => typeof entry === \"string\") ? [...value] : undefined;\n\nexport const askPayloadOf = (payload: unknown): AskPayload | undefined => {\n if (typeof payload !== \"object\" || payload === null) return undefined;\n const candidate = payload as Partial<AskPayload>;\n const options = stringArrayOf(candidate.options);\n if (typeof candidate.question !== \"string\" || !options) return undefined;\n return {\n question: candidate.question,\n options,\n multi: candidate.multi === true,\n ...(typeof candidate.recipient === \"string\" ? { recipient: candidate.recipient } : {}),\n };\n};\n\nexport const supersedingInputOf = (result: unknown): string | undefined => {\n if (typeof result !== \"object\" || result === null) return undefined;\n const { supersededBy } = result as { supersededBy?: unknown };\n return typeof supersededBy === \"string\" ? supersededBy : undefined;\n};\n"],
5
+ "mappings": "AAAO,IAAMA,EAAgB,cAGhBC,EAAoB,qDAU3BC,EAAiBC,GACrB,MAAM,QAAQA,CAAK,GAAKA,EAAM,MAAOC,GAAU,OAAOA,GAAU,QAAQ,EAAI,CAAC,GAAGD,CAAK,EAAI,OAE9EE,EAAgBC,GAA6C,CACxE,GAAI,OAAOA,GAAY,UAAYA,IAAY,KAAM,OACrD,IAAMC,EAAYD,EACZE,EAAUN,EAAcK,EAAU,OAAO,EAC/C,GAAI,SAAOA,EAAU,UAAa,UAAY,CAACC,GAC/C,MAAO,CACL,SAAUD,EAAU,SACpB,QAAAC,EACA,MAAOD,EAAU,QAAU,GAC3B,GAAI,OAAOA,EAAU,WAAc,SAAW,CAAE,UAAWA,EAAU,SAAU,EAAI,CAAC,CACtF,CACF,EAEaE,EAAsBC,GAAwC,CACzE,GAAI,OAAOA,GAAW,UAAYA,IAAW,KAAM,OACnD,GAAM,CAAE,aAAAC,CAAa,EAAID,EACzB,OAAO,OAAOC,GAAiB,SAAWA,EAAe,MAC3D",
6
+ "names": ["ASK_PLUGIN_ID", "SUPERSEDED_ANSWER", "stringArrayOf", "value", "entry", "askPayloadOf", "payload", "candidate", "options", "supersedingInputOf", "result", "supersededBy"]
7
+ }
@@ -1,4 +1,4 @@
1
- import{a as u}from"/plugins/ragents.ask/web/chunks/chunk-VUBJDIKQ.js";var M=u("react","createContext");var C=u("react","createElement");var k=u("react","forwardRef");var F=u("react","useContext");var D=u("react","useState");var b=a=>a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function U(a,e,d=[]){if(e==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:b(a),size:24,node:e,...d.length>0?{aliases:d}:{}}}var O=a=>{let e="",d=!1;for(let t of a){if(t==="-"||t==="_"||t<=" "){d=e.length>0;continue}e.length===0?e+=t.toLowerCase():e+=d?t.toUpperCase():t,d=!1}return e};var H=a=>{let e=O(a);return e.charAt(0).toUpperCase()+e.slice(1)};var P=(...a)=>a.filter((e,d,t)=>!!e&&e.trim()!==""&&t.indexOf(e)===d).join(" ").trim();var c={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function R(a){return a!=null}function v(a,e={}){let d=e.attributeNames??{},t=l=>d[l]??l,r=a.size??a.width??c.width,p=a.size??a.height??c.height,s=a.aliases?.filter(l=>typeof l=="string"&&l.trim()!=="").map(l=>`lucide-${l}`)??[],m=[...a.name?[`lucide-${a.name}`]:[],...s],i=e.className?.split(" ").filter(Boolean)??[],L=e.includeDefaultClasses===!1?P(...i):P("lucide",...m,...i),o=e.absoluteStrokeWidth?Number(e.strokeWidth??c["stroke-width"])*Number(a.size??a.width??c.width)/Number(e.size??e.width??c.width):e.strokeWidth??c["stroke-width"];return["svg",{...Object.entries(c).reduce((l,[x,h])=>(l[t(x)]=h,l),{}),..."color"in e&&e.color&&{[t("stroke")]:e.color},..."size"in e&&R(e.size)&&{[t("width")]:e.size,[t("height")]:e.size},..."width"in e&&R(e.width)&&{[t("width")]:e.width},..."height"in e&&R(e.height)&&{[t("height")]:e.height},[t("stroke-width")]:o,...L&&{[t("class")]:L},[t("viewBox")]:`0 0 ${r} ${p}`,...e.hasA11yProp===!1?{[t("aria-hidden")]:"true"}:{},..."attributes"in e&&e.attributes},a.node.map(l=>{let[x,h,A]=l,B=e.nonScalingStroke?{[t("vector-effect")]:"non-scaling-stroke",...h}:h;return A?[x,B,A]:[x,B]})]}function G(a,e={}){return v(a,{...e,attributeNames:{...e.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var E=a=>{for(let e in a)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};var ee=M({});var W=()=>F(ee);var V=k(({color:a,size:e,width:d,height:t,strokeWidth:r,absoluteStrokeWidth:p,nonScalingStroke:s,className:m="",children:i,iconNode:L=[],icon:o={node:L,aliases:[],size:24},...I},l)=>{let{size:x=24,strokeWidth:h=2,absoluteStrokeWidth:A=!1,nonScalingStroke:B=!1,color:K="currentColor",className:Z=""}=W()??{},Q=!!i||E(I),[J,j,Y=[]]=G(o,{color:a??K,width:d??e??x,height:t??e??x,strokeWidth:r??h,absoluteStrokeWidth:p??A,nonScalingStroke:s??B,className:P(Z,m),hasA11yProp:Q,attributes:I});return C(J,{ref:l,...j},[...Y.map(([$,_])=>C($,_)),...Array.isArray(i)?i:[i]])});function z(a,e=[],d=[]){let t=typeof a=="string"?U(a,e,d):a,r=k(({className:p,...s},m)=>C(V,{ref:m,icon:t,className:p,...s}));return t.name&&(r.displayName=H(t.name)),r}var X={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};X.node;var S=z(X);var g=u("@ragents/web/ui","Button");var w=u("@ragents/web/ui","Card");var T=u("@ragents/web/ui","Input");var y=u("@ragents/web/ui","cn");var ae=u("react/jsx-runtime","Fragment");var f=u("react/jsx-runtime","jsx");var n=u("react/jsx-runtime","jsxs");var q="gap-2.5 bg-background px-3.5 text-sm",N="h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal";function ka({text:a,question:e,answer:d,onAnswer:t}){let[r,p]=D([]),[s,m]=D("");if(d!==void 0)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),n("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground","data-question":"answered",children:[f(S,{className:"text-success",size:12}),d]})]});if(!t)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("ul",{className:"list-disc pl-6",children:e.options.map(o=>f("li",{children:o},o))})]});let i=o=>p(I=>I.includes(o)?I.filter(l=>l!==o):[...I,o]),L=()=>{let o=s.trim();o&&t(o)};return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("div",{className:"flex flex-col items-stretch gap-1.5",children:e.options.map(o=>e.multi?n(g,{"aria-pressed":r.includes(o),className:y(N,"aria-pressed:border-primary aria-pressed:bg-accent"),"data-question":"option",onClick:()=>i(o),variant:"outline",children:[f("span",{className:"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary",children:r.includes(o)&&f(S,{size:10})}),o]},o):f(g,{className:N,"data-question":"option",onClick:()=>t(o),variant:"outline",children:o},o))}),e.multi&&f(g,{className:"self-start",disabled:r.length===0,onClick:()=>t(r.join("; ")),size:"sm",children:"Auswahl \xFCbernehmen"}),n("div",{className:"flex gap-1.5",children:[f(T,{className:"flex-1",onChange:o=>m(o.target.value),onKeyDown:o=>{o.key==="Enter"&&L()},placeholder:"... oder frei antworten",value:s}),f(g,{disabled:s.trim()==="",onClick:L,size:"sm",variant:"outline",children:"Antworten"})]})]})}export{D as a,ae as b,f as c,n as d,ka as e};
1
+ import{a as u}from"/plugins/ragents.ask/web/chunks/chunk-PWFIAMX4.js";var M=u("react","createContext");var C=u("react","createElement");var k=u("react","forwardRef");var F=u("react","useContext");var D=u("react","useState");var b=a=>a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function U(a,e,d=[]){if(e==null)throw new Error("[lucide]: iconNode is required when icon name is used");return{name:b(a),size:24,node:e,...d.length>0?{aliases:d}:{}}}var O=a=>{let e="",d=!1;for(let t of a){if(t==="-"||t==="_"||t<=" "){d=e.length>0;continue}e.length===0?e+=t.toLowerCase():e+=d?t.toUpperCase():t,d=!1}return e};var H=a=>{let e=O(a);return e.charAt(0).toUpperCase()+e.slice(1)};var P=(...a)=>a.filter((e,d,t)=>!!e&&e.trim()!==""&&t.indexOf(e)===d).join(" ").trim();var c={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function R(a){return a!=null}function v(a,e={}){let d=e.attributeNames??{},t=l=>d[l]??l,r=a.size??a.width??c.width,p=a.size??a.height??c.height,s=a.aliases?.filter(l=>typeof l=="string"&&l.trim()!=="").map(l=>`lucide-${l}`)??[],m=[...a.name?[`lucide-${a.name}`]:[],...s],i=e.className?.split(" ").filter(Boolean)??[],L=e.includeDefaultClasses===!1?P(...i):P("lucide",...m,...i),o=e.absoluteStrokeWidth?Number(e.strokeWidth??c["stroke-width"])*Number(a.size??a.width??c.width)/Number(e.size??e.width??c.width):e.strokeWidth??c["stroke-width"];return["svg",{...Object.entries(c).reduce((l,[x,h])=>(l[t(x)]=h,l),{}),..."color"in e&&e.color&&{[t("stroke")]:e.color},..."size"in e&&R(e.size)&&{[t("width")]:e.size,[t("height")]:e.size},..."width"in e&&R(e.width)&&{[t("width")]:e.width},..."height"in e&&R(e.height)&&{[t("height")]:e.height},[t("stroke-width")]:o,...L&&{[t("class")]:L},[t("viewBox")]:`0 0 ${r} ${p}`,...e.hasA11yProp===!1?{[t("aria-hidden")]:"true"}:{},..."attributes"in e&&e.attributes},a.node.map(l=>{let[x,h,A]=l,B=e.nonScalingStroke?{[t("vector-effect")]:"non-scaling-stroke",...h}:h;return A?[x,B,A]:[x,B]})]}function G(a,e={}){return v(a,{...e,attributeNames:{...e.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var E=a=>{for(let e in a)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};var ee=M({});var W=()=>F(ee);var V=k(({color:a,size:e,width:d,height:t,strokeWidth:r,absoluteStrokeWidth:p,nonScalingStroke:s,className:m="",children:i,iconNode:L=[],icon:o={node:L,aliases:[],size:24},...I},l)=>{let{size:x=24,strokeWidth:h=2,absoluteStrokeWidth:A=!1,nonScalingStroke:B=!1,color:K="currentColor",className:Z=""}=W()??{},Q=!!i||E(I),[J,j,Y=[]]=G(o,{color:a??K,width:d??e??x,height:t??e??x,strokeWidth:r??h,absoluteStrokeWidth:p??A,nonScalingStroke:s??B,className:P(Z,m),hasA11yProp:Q,attributes:I});return C(J,{ref:l,...j},[...Y.map(([$,_])=>C($,_)),...Array.isArray(i)?i:[i]])});function z(a,e=[],d=[]){let t=typeof a=="string"?U(a,e,d):a,r=k(({className:p,...s},m)=>C(V,{ref:m,icon:t,className:p,...s}));return t.name&&(r.displayName=H(t.name)),r}var X={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};X.node;var S=z(X);var g=u("@ragents/web/ui","Button");var w=u("@ragents/web/ui","Card");var T=u("@ragents/web/ui","Input");var y=u("@ragents/web/ui","cn");var ae=u("react/jsx-runtime","Fragment");var f=u("react/jsx-runtime","jsx");var n=u("react/jsx-runtime","jsxs");var q="gap-2.5 bg-background px-3.5 text-sm",N="h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal";function ka({text:a,question:e,answer:d,onAnswer:t}){let[r,p]=D([]),[s,m]=D("");if(d!==void 0)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),n("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground","data-question":"answered",children:[f(S,{className:"text-success",size:12}),d]})]});if(!t)return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("ul",{className:"list-disc pl-6",children:e.options.map(o=>f("li",{children:o},o))})]});let i=o=>p(I=>I.includes(o)?I.filter(l=>l!==o):[...I,o]),L=()=>{let o=s.trim();o&&t(o)};return n(w,{className:q,size:"sm",children:[f("div",{className:"leading-normal",children:a}),f("div",{className:"flex flex-col items-stretch gap-1.5",children:e.options.map(o=>e.multi?n(g,{"aria-pressed":r.includes(o),className:y(N,"aria-pressed:border-primary aria-pressed:bg-accent"),"data-question":"option",onClick:()=>i(o),variant:"outline",children:[f("span",{className:"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary",children:r.includes(o)&&f(S,{size:10})}),o]},o):f(g,{className:N,"data-question":"option",onClick:()=>t(o),variant:"outline",children:o},o))}),e.multi&&f(g,{className:"self-start",disabled:r.length===0,onClick:()=>t(r.join("; ")),size:"sm",children:"Apply selection"}),n("div",{className:"flex gap-1.5",children:[f(T,{className:"flex-1",onChange:o=>m(o.target.value),onKeyDown:o=>{o.key==="Enter"&&L()},placeholder:"... or answer freely",value:s}),f(g,{disabled:s.trim()==="",onClick:L,size:"sm",variant:"outline",children:"Answer"})]})]})}export{D as a,ae as b,f as c,n as d,ka as e};
2
2
  /*! Bundled license information:
3
3
 
4
4
  lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs:
@@ -22,4 +22,4 @@ lucide-react/dist/esm/lucide-react.mjs:
22
22
  * See the LICENSE file in the root directory of this source tree.
23
23
  *)
24
24
  */
25
- //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-MBRPS477.js.map
25
+ //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-IQBHK7MV.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["ragents-host-value:react#createContext", "ragents-host-value:react#createElement", "ragents-host-value:react#forwardRef", "ragents-host-value:react#useContext", "ragents-host-value:react#useState", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toKebabCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toLucideIconData.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toCamelCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toPascalCase.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/mergeClasses.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/defaultAttributes.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconNode.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconForReact.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/hasA11yProp.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/context.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/Icon.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/createLucideIcon.ts", "../../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/check.ts", "ragents-host-value:@ragents/web/ui#Button", "ragents-host-value:@ragents/web/ui#Card", "ragents-host-value:@ragents/web/ui#Input", "ragents-host-value:@ragents/web/ui#cn", "ragents-host-value:react/jsx-runtime#Fragment", "ragents-host-value:react/jsx-runtime#jsx", "ragents-host-value:react/jsx-runtime#jsxs", "../../../../plugins/ragents.ask/web/QuestionCard.tsx"],
4
- "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createElement\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"forwardRef\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useState\");\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "import { toKebabCase } from './toKebabCase';\nimport type { LucideIconData, LucideIconNode } from '../build/types';\n\n/**\n * Converts legacy `(name, iconNode, aliases?)` icon arguments into icon data object format.\n */\nexport function toLucideIconData(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases: string[] = [],\n): LucideIconData {\n if (iconNode == null) {\n throw new Error('[lucide]: iconNode is required when icon name is used');\n }\n\n return {\n name: toKebabCase(iconName),\n size: 24,\n node: iconNode,\n ...(aliases.length > 0 ? { aliases } : {}),\n };\n}\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) => {\n let out = '';\n let upperNext = false;\n\n for (const ch of string) {\n if (ch === '-' || ch === '_' || ch <= ' ') {\n upperNext = out.length > 0;\n continue;\n }\n\n if (out.length === 0) {\n out += ch.toLowerCase();\n } else {\n out += upperNext ? ch.toUpperCase() : ch;\n }\n\n upperNext = false;\n }\n\n return out as string;\n};\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "const defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n} as const;\n\nexport default defaultAttributes;\n", "import type { LucideBuildParams, LucideIconData, LucideIconNode, SVGProps } from './types';\nimport defaultAttributes from './defaultAttributes';\nimport { mergeClasses } from '../utils/mergeClasses';\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\n/**\n * Creates a Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = {}): LucideIconNode {\n const attributeNames = params.attributeNames ?? {};\n const getAttributeName = (attributeName: string) =>\n attributeNames[attributeName] ?? attributeName;\n\n const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes['width'];\n const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes['height'];\n const aliasClassNames =\n icon.aliases\n ?.filter((alias: string): alias is string => typeof alias === 'string' && alias.trim() !== '')\n .map((alias: string) => `lucide-${alias}`) ?? [];\n const iconClassNames = [...(icon.name ? [`lucide-${icon.name}`] : []), ...aliasClassNames];\n const classNamesFromClassName = params.className?.split(' ').filter(Boolean) ?? [];\n const className =\n params.includeDefaultClasses === false\n ? mergeClasses(...classNamesFromClassName)\n : mergeClasses('lucide', ...iconClassNames, ...classNamesFromClassName);\n\n const calculatedStrokeWidth = params.absoluteStrokeWidth\n ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) *\n Number(icon.size ?? icon.width ?? defaultAttributes['width'])) /\n Number(params.size ?? params.width ?? defaultAttributes['width'])\n : (params.strokeWidth ?? defaultAttributes['stroke-width']);\n\n const attributes = {\n ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n attrs[getAttributeName(attrName)] = value;\n return attrs;\n }, {} as SVGProps),\n ...('color' in params &&\n params.color && {\n [getAttributeName('stroke')]: params.color,\n }),\n ...('size' in params &&\n isDefined(params.size) && {\n [getAttributeName('width')]: params.size,\n [getAttributeName('height')]: params.size,\n }),\n ...('width' in params &&\n isDefined(params.width) && {\n [getAttributeName('width')]: params.width,\n }),\n ...('height' in params &&\n isDefined(params.height) && {\n [getAttributeName('height')]: params.height,\n }),\n [getAttributeName('stroke-width')]: calculatedStrokeWidth,\n ...(className && {\n [getAttributeName('class')]: className,\n }),\n [getAttributeName('viewBox')]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n ...(params.hasA11yProp === false\n ? {\n [getAttributeName('aria-hidden')]: 'true',\n }\n : {}),\n ...('attributes' in params && params.attributes),\n };\n\n return [\n 'svg',\n attributes,\n icon.node.map((child): LucideIconNode => {\n const [name, attrs, children] = child;\n const nextAttrs = params.nonScalingStroke\n ? { [getAttributeName('vector-effect')]: 'non-scaling-stroke', ...attrs }\n : attrs;\n\n return children ? [name, nextAttrs, children] : [name, nextAttrs];\n }),\n ];\n}\n\nexport default buildLucideIconNode;\n", "import buildLucideIconNode from './buildLucideIconNode';\nimport type { LucideBuildParams, LucideIconData, LucideIconNode } from './types';\n\n/**\n * Creates a React-compatible Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconForReact(\n icon: LucideIconData,\n params: LucideBuildParams = {},\n): LucideIconNode {\n return buildLucideIconNode(icon, {\n ...params,\n attributeNames: {\n ...params.attributeNames,\n class: 'className',\n 'stroke-width': 'strokeWidth',\n 'stroke-linecap': 'strokeLinecap',\n 'stroke-linejoin': 'strokeLinejoin',\n 'vector-effect': 'vectorEffect',\n },\n });\n}\n\nexport default buildLucideIconForReact;\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: object) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n /**\n * @deprecated Use `nonScalingStroke` instead.\n */\n absoluteStrokeWidth: boolean;\n nonScalingStroke: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n", "'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport { buildLucideIconForReact, hasA11yProp, mergeClasses } from '@lucide/shared';\nimport { LucideIconData, LucideIconNode, LucideProps } from './types';\nimport { useLucideContext } from './context';\n\ntype IconComponentProps = LucideProps &\n (\n | {\n iconNode: LucideIconNode[];\n icon?: never;\n }\n | {\n icon: LucideIconData;\n iconNode?: never;\n }\n );\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {boolean} props.nonScalingStroke - Whether to use non scaling strokes\n * @param {string} props.className - The class name of the icon\n * @param {LucideIconNode[]} props.children - The children of the icon\n * @param {LucideIconNode[]} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color,\n size,\n width,\n height,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className = '',\n children,\n iconNode = [],\n icon = {\n node: iconNode,\n aliases: [],\n size: 24,\n },\n ...rest\n },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n nonScalingStroke: contextNonScalingStroke = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n\n const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n color: color ?? contextColor,\n width: width ?? size ?? contextSize,\n height: height ?? size ?? contextSize,\n strokeWidth: strokeWidth ?? contextStrokeWidth,\n absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n className: mergeClasses(contextClass, className),\n hasA11yProp: hasAccessibleProp,\n attributes: rest,\n });\n\n return createElement(\n name,\n {\n ref,\n ...svgAttributes,\n },\n [\n ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { toLucideIconData, toPascalCase } from '@lucide/shared';\nimport { LucideIcon, LucideIconData, LucideIconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Creates a Lucide icon component from icon data.\n *\n * @param icon Icon data object.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(icon: LucideIconData): LucideIcon;\n\n/**\n * Creates a Lucide icon component from the legacy icon arguments.\n *\n * @param iconName Icon name.\n * @param iconNode Icon node.\n * @param aliases Optional icon aliases.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases?: string[],\n): LucideIcon;\n\nfunction createLucideIcon(\n iconDataOrName: LucideIconData | string,\n iconNode: LucideIconNode[] = [],\n aliases: string[] = [],\n): LucideIcon {\n const iconData =\n typeof iconDataOrName === 'string'\n ? toLucideIconData(iconDataOrName, iconNode, aliases)\n : iconDataOrName;\n\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n icon: iconData,\n className,\n ...props,\n }),\n );\n\n if (iconData.name) {\n Component.displayName = toPascalCase(iconData.name);\n }\n\n return Component;\n}\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'check',\n size: 24,\n node: [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon(__iconData);\n\nexport default Check;\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Button\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Card\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Input\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"cn\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"Fragment\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsxs\");\n", "import { CheckIcon } from \"lucide-react\";\nimport { Button, Card, cn, Input } from \"@ragents/web/ui\";\nimport { useState } from \"react\";\nimport type { AskPayload } from \"../ask-payload\";\n\nconst cardClasses = \"gap-2.5 bg-background px-3.5 text-sm\";\nconst optionClasses = \"h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal\";\n\n/**\n * R\u00FCckfrage-Karte: Optionen untereinander, wahlweise Einzel- oder Mehrfachauswahl\n * (question.multi), dazu immer eine freie Antwortzeile. Nach der Antwort nur noch Beleg.\n */\nexport function QuestionCard({\n text,\n question,\n answer,\n onAnswer,\n}: {\n text: string;\n question: AskPayload;\n answer?: string;\n onAnswer?: (text: string) => void;\n}) {\n const [gewaehlt, setGewaehlt] = useState<string[]>([]);\n const [frei, setFrei] = useState(\"\");\n\n if (answer !== undefined) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex items-center gap-1.5 text-sm text-muted-foreground\" data-question=\"answered\">\n <CheckIcon className=\"text-success\" size={12} />\n {answer}\n </div>\n </Card>\n );\n }\n\n if (!onAnswer) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <ul className=\"list-disc pl-6\">{question.options.map((option) => <li key={option}>{option}</li>)}</ul>\n </Card>\n );\n }\n\n const umschalten = (option: string) =>\n setGewaehlt((bisher) =>\n bisher.includes(option) ? bisher.filter((o) => o !== option) : [...bisher, option]);\n\n const freiSenden = () => {\n const wert = frei.trim();\n if (wert) onAnswer(wert);\n };\n\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex flex-col items-stretch gap-1.5\">\n {question.options.map((option) =>\n question.multi ? (\n <Button\n aria-pressed={gewaehlt.includes(option)}\n className={cn(optionClasses, \"aria-pressed:border-primary aria-pressed:bg-accent\")}\n data-question=\"option\"\n key={option}\n onClick={() => umschalten(option)}\n variant=\"outline\"\n >\n <span className=\"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary\">\n {gewaehlt.includes(option) && <CheckIcon size={10} />}\n </span>\n {option}\n </Button>\n ) : (\n <Button className={optionClasses} data-question=\"option\" key={option} onClick={() => onAnswer(option)} variant=\"outline\">\n {option}\n </Button>\n ),\n )}\n </div>\n {question.multi && (\n <Button\n className=\"self-start\"\n disabled={gewaehlt.length === 0}\n onClick={() => onAnswer(gewaehlt.join(\"; \"))}\n size=\"sm\"\n >\n Auswahl \u00FCbernehmen\n </Button>\n )}\n <div className=\"flex gap-1.5\">\n <Input\n className=\"flex-1\"\n onChange={(event) => setFrei(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") freiSenden();\n }}\n placeholder=\"... oder frei antworten\"\n value={frei}\n />\n <Button disabled={frei.trim() === \"\"} onClick={freiSenden} size=\"sm\" variant=\"outline\">\n Antworten\n </Button>\n </div>\n </Card>\n );\n}\n"],
5
- "mappings": "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",
6
- "names": ["react_createContext_default", "read", "react_createElement_default", "read", "react_forwardRef_default", "read", "react_useContext_default", "read", "react_useState_default", "read", "toKebabCase", "string", "toLucideIconData", "iconName", "iconNode", "aliases", "toKebabCase", "toCamelCase", "string", "out", "upperNext", "ch", "toPascalCase", "string", "camelCase", "toCamelCase", "mergeClasses", "classes", "className", "index", "array", "defaultAttributes", "isDefined", "value", "buildLucideIconNode", "icon", "params", "attributeNames", "getAttributeName", "attributeName", "viewBoxWidth", "defaultAttributes", "viewBoxHeight", "aliasClassNames", "alias", "iconClassNames", "classNamesFromClassName", "className", "mergeClasses", "calculatedStrokeWidth", "attrs", "attrName", "child", "name", "children", "nextAttrs", "buildLucideIconForReact", "icon", "params", "buildLucideIconNode", "hasA11yProp", "props", "prop", "LucideContext", "react_createContext_default", "useLucideContext", "react_useContext_default", "LucideContext", "Icon", "react_forwardRef_default", "color", "size", "width", "height", "strokeWidth", "absoluteStrokeWidth", "nonScalingStroke", "className", "children", "iconNode", "icon", "rest", "ref", "contextSize", "contextStrokeWidth", "contextAbsoluteStrokeWidth", "contextNonScalingStroke", "contextColor", "contextClass", "useLucideContext", "hasAccessibleProp", "hasA11yProp", "name", "svgAttributes", "builtIconNode", "buildLucideIconForReact", "mergeClasses", "react_createElement_default", "tag", "attrs", "createLucideIcon", "iconDataOrName", "iconNode", "aliases", "iconData", "toLucideIconData", "Component", "react_forwardRef_default", "className", "props", "ref", "react_createElement_default", "Icon", "toPascalCase", "__iconData", "Check", "createLucideIcon", "ui_Button_default", "read", "ui_Card_default", "read", "ui_Input_default", "read", "ui_cn_default", "read", "jsx_runtime_Fragment_default", "read", "jsx_runtime_jsx_default", "read", "jsx_runtime_jsxs_default", "read", "cardClasses", "optionClasses", "QuestionCard", "text", "question", "answer", "onAnswer", "gewaehlt", "setGewaehlt", "react_useState_default", "frei", "setFrei", "jsx_runtime_jsxs_default", "ui_Card_default", "jsx_runtime_jsx_default", "Check", "option", "umschalten", "bisher", "o", "freiSenden", "wert", "ui_Button_default", "ui_cn_default", "ui_Input_default", "event"]
4
+ "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createElement\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"forwardRef\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useState\");\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "import { toKebabCase } from './toKebabCase';\nimport type { LucideIconData, LucideIconNode } from '../build/types';\n\n/**\n * Converts legacy `(name, iconNode, aliases?)` icon arguments into icon data object format.\n */\nexport function toLucideIconData(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases: string[] = [],\n): LucideIconData {\n if (iconNode == null) {\n throw new Error('[lucide]: iconNode is required when icon name is used');\n }\n\n return {\n name: toKebabCase(iconName),\n size: 24,\n node: iconNode,\n ...(aliases.length > 0 ? { aliases } : {}),\n };\n}\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) => {\n let out = '';\n let upperNext = false;\n\n for (const ch of string) {\n if (ch === '-' || ch === '_' || ch <= ' ') {\n upperNext = out.length > 0;\n continue;\n }\n\n if (out.length === 0) {\n out += ch.toLowerCase();\n } else {\n out += upperNext ? ch.toUpperCase() : ch;\n }\n\n upperNext = false;\n }\n\n return out as string;\n};\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "const defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n} as const;\n\nexport default defaultAttributes;\n", "import type { LucideBuildParams, LucideIconData, LucideIconNode, SVGProps } from './types';\nimport defaultAttributes from './defaultAttributes';\nimport { mergeClasses } from '../utils/mergeClasses';\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\n/**\n * Creates a Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = {}): LucideIconNode {\n const attributeNames = params.attributeNames ?? {};\n const getAttributeName = (attributeName: string) =>\n attributeNames[attributeName] ?? attributeName;\n\n const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes['width'];\n const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes['height'];\n const aliasClassNames =\n icon.aliases\n ?.filter((alias: string): alias is string => typeof alias === 'string' && alias.trim() !== '')\n .map((alias: string) => `lucide-${alias}`) ?? [];\n const iconClassNames = [...(icon.name ? [`lucide-${icon.name}`] : []), ...aliasClassNames];\n const classNamesFromClassName = params.className?.split(' ').filter(Boolean) ?? [];\n const className =\n params.includeDefaultClasses === false\n ? mergeClasses(...classNamesFromClassName)\n : mergeClasses('lucide', ...iconClassNames, ...classNamesFromClassName);\n\n const calculatedStrokeWidth = params.absoluteStrokeWidth\n ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) *\n Number(icon.size ?? icon.width ?? defaultAttributes['width'])) /\n Number(params.size ?? params.width ?? defaultAttributes['width'])\n : (params.strokeWidth ?? defaultAttributes['stroke-width']);\n\n const attributes = {\n ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n attrs[getAttributeName(attrName)] = value;\n return attrs;\n }, {} as SVGProps),\n ...('color' in params &&\n params.color && {\n [getAttributeName('stroke')]: params.color,\n }),\n ...('size' in params &&\n isDefined(params.size) && {\n [getAttributeName('width')]: params.size,\n [getAttributeName('height')]: params.size,\n }),\n ...('width' in params &&\n isDefined(params.width) && {\n [getAttributeName('width')]: params.width,\n }),\n ...('height' in params &&\n isDefined(params.height) && {\n [getAttributeName('height')]: params.height,\n }),\n [getAttributeName('stroke-width')]: calculatedStrokeWidth,\n ...(className && {\n [getAttributeName('class')]: className,\n }),\n [getAttributeName('viewBox')]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n ...(params.hasA11yProp === false\n ? {\n [getAttributeName('aria-hidden')]: 'true',\n }\n : {}),\n ...('attributes' in params && params.attributes),\n };\n\n return [\n 'svg',\n attributes,\n icon.node.map((child): LucideIconNode => {\n const [name, attrs, children] = child;\n const nextAttrs = params.nonScalingStroke\n ? { [getAttributeName('vector-effect')]: 'non-scaling-stroke', ...attrs }\n : attrs;\n\n return children ? [name, nextAttrs, children] : [name, nextAttrs];\n }),\n ];\n}\n\nexport default buildLucideIconNode;\n", "import buildLucideIconNode from './buildLucideIconNode';\nimport type { LucideBuildParams, LucideIconData, LucideIconNode } from './types';\n\n/**\n * Creates a React-compatible Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconForReact(\n icon: LucideIconData,\n params: LucideBuildParams = {},\n): LucideIconNode {\n return buildLucideIconNode(icon, {\n ...params,\n attributeNames: {\n ...params.attributeNames,\n class: 'className',\n 'stroke-width': 'strokeWidth',\n 'stroke-linecap': 'strokeLinecap',\n 'stroke-linejoin': 'strokeLinejoin',\n 'vector-effect': 'vectorEffect',\n },\n });\n}\n\nexport default buildLucideIconForReact;\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: object) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n /**\n * @deprecated Use `nonScalingStroke` instead.\n */\n absoluteStrokeWidth: boolean;\n nonScalingStroke: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n", "'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport { buildLucideIconForReact, hasA11yProp, mergeClasses } from '@lucide/shared';\nimport { LucideIconData, LucideIconNode, LucideProps } from './types';\nimport { useLucideContext } from './context';\n\ntype IconComponentProps = LucideProps &\n (\n | {\n iconNode: LucideIconNode[];\n icon?: never;\n }\n | {\n icon: LucideIconData;\n iconNode?: never;\n }\n );\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {boolean} props.nonScalingStroke - Whether to use non scaling strokes\n * @param {string} props.className - The class name of the icon\n * @param {LucideIconNode[]} props.children - The children of the icon\n * @param {LucideIconNode[]} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color,\n size,\n width,\n height,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className = '',\n children,\n iconNode = [],\n icon = {\n node: iconNode,\n aliases: [],\n size: 24,\n },\n ...rest\n },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n nonScalingStroke: contextNonScalingStroke = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n\n const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n color: color ?? contextColor,\n width: width ?? size ?? contextSize,\n height: height ?? size ?? contextSize,\n strokeWidth: strokeWidth ?? contextStrokeWidth,\n absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n className: mergeClasses(contextClass, className),\n hasA11yProp: hasAccessibleProp,\n attributes: rest,\n });\n\n return createElement(\n name,\n {\n ref,\n ...svgAttributes,\n },\n [\n ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { toLucideIconData, toPascalCase } from '@lucide/shared';\nimport { LucideIcon, LucideIconData, LucideIconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Creates a Lucide icon component from icon data.\n *\n * @param icon Icon data object.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(icon: LucideIconData): LucideIcon;\n\n/**\n * Creates a Lucide icon component from the legacy icon arguments.\n *\n * @param iconName Icon name.\n * @param iconNode Icon node.\n * @param aliases Optional icon aliases.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases?: string[],\n): LucideIcon;\n\nfunction createLucideIcon(\n iconDataOrName: LucideIconData | string,\n iconNode: LucideIconNode[] = [],\n aliases: string[] = [],\n): LucideIcon {\n const iconData =\n typeof iconDataOrName === 'string'\n ? toLucideIconData(iconDataOrName, iconNode, aliases)\n : iconDataOrName;\n\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n icon: iconData,\n className,\n ...props,\n }),\n );\n\n if (iconData.name) {\n Component.displayName = toPascalCase(iconData.name);\n }\n\n return Component;\n}\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'check',\n size: 24,\n node: [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon(__iconData);\n\nexport default Check;\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Button\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Card\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Input\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"cn\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"Fragment\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsxs\");\n", "import { CheckIcon } from \"lucide-react\";\nimport { Button, Card, cn, Input } from \"@ragents/web/ui\";\nimport { useState } from \"react\";\nimport type { AskPayload } from \"../ask-payload\";\n\nconst cardClasses = \"gap-2.5 bg-background px-3.5 text-sm\";\nconst optionClasses = \"h-auto w-full justify-start gap-2 px-3 py-1.5 text-left text-sm font-normal whitespace-normal\";\n\n/**\n * Question card: options stacked, either single or multiple choice\n * (question.multi), plus always a free answer line. After the answer only the record remains.\n */\nexport function QuestionCard({\n text,\n question,\n answer,\n onAnswer,\n}: {\n text: string;\n question: AskPayload;\n answer?: string;\n onAnswer?: (text: string) => void;\n}) {\n const [selected, setSelected] = useState<string[]>([]);\n const [freeText, setFreeText] = useState(\"\");\n\n if (answer !== undefined) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex items-center gap-1.5 text-sm text-muted-foreground\" data-question=\"answered\">\n <CheckIcon className=\"text-success\" size={12} />\n {answer}\n </div>\n </Card>\n );\n }\n\n if (!onAnswer) {\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <ul className=\"list-disc pl-6\">{question.options.map((option) => <li key={option}>{option}</li>)}</ul>\n </Card>\n );\n }\n\n const toggle = (option: string) =>\n setSelected((previous) =>\n previous.includes(option) ? previous.filter((o) => o !== option) : [...previous, option]);\n\n const sendFreeText = () => {\n const value = freeText.trim();\n if (value) onAnswer(value);\n };\n\n return (\n <Card className={cardClasses} size=\"sm\">\n <div className=\"leading-normal\">{text}</div>\n <div className=\"flex flex-col items-stretch gap-1.5\">\n {question.options.map((option) =>\n question.multi ? (\n <Button\n aria-pressed={selected.includes(option)}\n className={cn(optionClasses, \"aria-pressed:border-primary aria-pressed:bg-accent\")}\n data-question=\"option\"\n key={option}\n onClick={() => toggle(option)}\n variant=\"outline\"\n >\n <span className=\"inline-flex size-3.5 flex-none items-center justify-center rounded-sm border border-border text-primary group-aria-pressed/button:border-primary\">\n {selected.includes(option) && <CheckIcon size={10} />}\n </span>\n {option}\n </Button>\n ) : (\n <Button className={optionClasses} data-question=\"option\" key={option} onClick={() => onAnswer(option)} variant=\"outline\">\n {option}\n </Button>\n ),\n )}\n </div>\n {question.multi && (\n <Button\n className=\"self-start\"\n disabled={selected.length === 0}\n onClick={() => onAnswer(selected.join(\"; \"))}\n size=\"sm\"\n >\n Apply selection\n </Button>\n )}\n <div className=\"flex gap-1.5\">\n <Input\n className=\"flex-1\"\n onChange={(event) => setFreeText(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") sendFreeText();\n }}\n placeholder=\"... or answer freely\"\n value={freeText}\n />\n <Button disabled={freeText.trim() === \"\"} onClick={sendFreeText} size=\"sm\" variant=\"outline\">\n Answer\n </Button>\n </div>\n </Card>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["react_createContext_default", "read", "react_createElement_default", "read", "react_forwardRef_default", "read", "react_useContext_default", "read", "react_useState_default", "read", "toKebabCase", "string", "toLucideIconData", "iconName", "iconNode", "aliases", "toKebabCase", "toCamelCase", "string", "out", "upperNext", "ch", "toPascalCase", "string", "camelCase", "toCamelCase", "mergeClasses", "classes", "className", "index", "array", "defaultAttributes", "isDefined", "value", "buildLucideIconNode", "icon", "params", "attributeNames", "getAttributeName", "attributeName", "viewBoxWidth", "defaultAttributes", "viewBoxHeight", "aliasClassNames", "alias", "iconClassNames", "classNamesFromClassName", "className", "mergeClasses", "calculatedStrokeWidth", "attrs", "attrName", "child", "name", "children", "nextAttrs", "buildLucideIconForReact", "icon", "params", "buildLucideIconNode", "hasA11yProp", "props", "prop", "LucideContext", "react_createContext_default", "useLucideContext", "react_useContext_default", "LucideContext", "Icon", "react_forwardRef_default", "color", "size", "width", "height", "strokeWidth", "absoluteStrokeWidth", "nonScalingStroke", "className", "children", "iconNode", "icon", "rest", "ref", "contextSize", "contextStrokeWidth", "contextAbsoluteStrokeWidth", "contextNonScalingStroke", "contextColor", "contextClass", "useLucideContext", "hasAccessibleProp", "hasA11yProp", "name", "svgAttributes", "builtIconNode", "buildLucideIconForReact", "mergeClasses", "react_createElement_default", "tag", "attrs", "createLucideIcon", "iconDataOrName", "iconNode", "aliases", "iconData", "toLucideIconData", "Component", "react_forwardRef_default", "className", "props", "ref", "react_createElement_default", "Icon", "toPascalCase", "__iconData", "Check", "createLucideIcon", "ui_Button_default", "read", "ui_Card_default", "read", "ui_Input_default", "read", "ui_cn_default", "read", "jsx_runtime_Fragment_default", "read", "jsx_runtime_jsx_default", "read", "jsx_runtime_jsxs_default", "read", "cardClasses", "optionClasses", "QuestionCard", "text", "question", "answer", "onAnswer", "selected", "setSelected", "react_useState_default", "freeText", "setFreeText", "jsx_runtime_jsxs_default", "ui_Card_default", "jsx_runtime_jsx_default", "Check", "option", "toggle", "previous", "o", "sendFreeText", "value", "ui_Button_default", "ui_cn_default", "ui_Input_default", "event"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ var e=(o,t)=>{let r=globalThis.__ragentsHostModules?.[o];if(r===void 0)throw new Error(`The host does not provide ${o}`);if(!(t in r))throw new Error(`The host does not provide ${t} from ${o}; the bundle was built against a newer host`);return r[t]};export{e as a};
2
+ //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["ragents-host-read:read"],
4
+ "sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`The host does not provide ${specifier}`);\n if (!(name in module)) throw new Error(`The host does not provide ${name} from ${specifier}; the bundle was built against a newer host`);\n return module[name];\n};"],
5
+ "mappings": "AAAO,IAAMA,EAAO,CAACC,EAAWC,IAAS,CACvC,IAAMC,EAAS,WAAW,uBAA0BF,CAAS,EAC7D,GAAIE,IAAW,OAAW,MAAM,IAAI,MAAM,6BAA6BF,CAAS,EAAE,EAClF,GAAI,EAAEC,KAAQC,GAAS,MAAM,IAAI,MAAM,6BAA6BD,CAAI,SAASD,CAAS,6CAA6C,EACvI,OAAOE,EAAOD,CAAI,CACpB",
6
+ "names": ["read", "specifier", "name", "module"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as t}from"/plugins/ragents.ask/web/chunks/chunk-PWFIAMX4.js";var r=t("@ragents/web/rpc","rpc");var e=t("typebox","Type");var a=t("@ragents/engine/src/rpc/contract","defineOperation");var o={answer:a({id:"ragents.ask.answer",description:"Answer or dismiss a question of the run. Rights: runs.read and runs.write.",rights:["runs.read","runs.write"],input:e.Object({runId:e.String({minLength:1,maxLength:64,description:"Run id"}),actionId:e.String({minLength:1,maxLength:80,description:"Question id"}),answer:e.Optional(e.String({description:"The user's answer"})),dismiss:e.Optional(e.Boolean({description:"true dismisses the question without an answer"}))},{additionalProperties:!1}),result:e.Null()})};var g=async(f,s,l)=>{await r.call(o.answer,{runId:f,actionId:s,answer:l})};export{g as a};
2
+ //# sourceMappingURL=/plugins/ragents.ask/web/chunks/chunk-QHGKEESD.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["ragents-host-value:@ragents/web/rpc#rpc", "ragents-host-value:typebox#Type", "ragents-host-value:@ragents/engine/src/rpc/contract#defineOperation", "../../../../plugins/ragents.ask/contract.ts", "../../../../plugins/ragents.ask/web/api.ts"],
4
+ "sourcesContent": ["import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/rpc\", \"rpc\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"typebox\", \"Type\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/engine/src/rpc/contract\", \"defineOperation\");\n", "import { Type } from \"typebox\";\nimport { defineOperation } from \"@ragents/engine/src/rpc/contract\";\n\nexport const askContracts = {\n answer: defineOperation({\n id: \"ragents.ask.answer\",\n description: \"Answer or dismiss a question of the run. Rights: runs.read and runs.write.\",\n rights: [\"runs.read\", \"runs.write\"],\n input: Type.Object({\n runId: Type.String({ minLength: 1, maxLength: 64, description: \"Run id\" }),\n actionId: Type.String({ minLength: 1, maxLength: 80, description: \"Question id\" }),\n answer: Type.Optional(Type.String({ description: \"The user's answer\" })),\n dismiss: Type.Optional(Type.Boolean({ description: \"true dismisses the question without an answer\" })),\n }, { additionalProperties: false }),\n result: Type.Null(),\n }),\n};\n", "import { rpc } from \"@ragents/web/rpc\";\nimport { askContracts } from \"../contract\";\n\nexport const answerQuestion = async (runId: string, actionId: string, answer: string): Promise<void> => {\n await rpc.call(askContracts.answer, { runId, actionId, answer });\n};\n"],
5
+ "mappings": "sEACA,IAAOA,EAAQC,EAAK,mBAAoB,KAAK,ECA7C,IAAOC,EAAQC,EAAK,UAAW,MAAM,ECArC,IAAOC,EAAQC,EAAK,mCAAoC,iBAAiB,ECElE,IAAMC,EAAe,CAC1B,OAAQC,EAAgB,CACtB,GAAI,qBACJ,YAAa,6EACb,OAAQ,CAAC,YAAa,YAAY,EAClC,MAAOC,EAAK,OAAO,CACjB,MAAOA,EAAK,OAAO,CAAE,UAAW,EAAG,UAAW,GAAI,YAAa,QAAS,CAAC,EACzE,SAAUA,EAAK,OAAO,CAAE,UAAW,EAAG,UAAW,GAAI,YAAa,aAAc,CAAC,EACjF,OAAQA,EAAK,SAASA,EAAK,OAAO,CAAE,YAAa,mBAAoB,CAAC,CAAC,EACvE,QAASA,EAAK,SAASA,EAAK,QAAQ,CAAE,YAAa,+CAAgD,CAAC,CAAC,CACvG,EAAG,CAAE,qBAAsB,EAAM,CAAC,EAClC,OAAQA,EAAK,KAAK,CACpB,CAAC,CACH,ECbO,IAAMC,EAAiB,MAAOC,EAAeC,EAAkBC,IAAkC,CACtG,MAAMC,EAAI,KAAKC,EAAa,OAAQ,CAAE,MAAAJ,EAAO,SAAAC,EAAU,OAAAC,CAAO,CAAC,CACjE",
6
+ "names": ["rpc_rpc_default", "read", "typebox_Type_default", "read", "contract_defineOperation_default", "read", "askContracts", "contract_defineOperation_default", "typebox_Type_default", "answerQuestion", "runId", "actionId", "answer", "rpc_rpc_default", "askContracts"]
7
+ }