@schlenkr/ragents 0.1.5 → 0.1.6

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 (1052) hide show
  1. package/README.md +18 -11
  2. package/apps/server/package.json +8 -6
  3. package/apps/server/src/access-projection.ts +3 -3
  4. package/apps/server/src/access-service.ts +19 -8
  5. package/apps/server/src/access-session.ts +6 -2
  6. package/apps/server/src/api/contracts.ts +19 -18
  7. package/apps/server/src/api/core-methods.ts +45 -26
  8. package/apps/server/src/api/delivery.ts +4 -4
  9. package/apps/server/src/api/reference.ts +1 -1
  10. package/apps/server/src/api/rights.ts +86 -7
  11. package/apps/server/src/chat-context.ts +1 -1
  12. package/apps/server/src/chat-handler.ts +14 -7
  13. package/apps/server/src/config-file.ts +25 -6
  14. package/apps/server/src/config.ts +4 -4
  15. package/apps/server/src/data-directory.ts +1 -1
  16. package/apps/server/src/folder-install.ts +115 -0
  17. package/apps/server/src/host-api.json +1256 -0
  18. package/apps/server/src/host-api.ts +190 -0
  19. package/apps/server/src/host-resolution-hooks.mjs +50 -1
  20. package/apps/server/src/host-resolution.ts +26 -1
  21. package/apps/server/src/host-version.ts +41 -0
  22. package/apps/server/src/host-web.ts +59 -0
  23. package/apps/server/src/layout.ts +1 -1
  24. package/apps/server/src/main.ts +3 -2
  25. package/apps/server/src/missing-environment.ts +47 -0
  26. package/apps/server/src/parent-watch.ts +37 -0
  27. package/apps/server/src/plugin-build/build.ts +650 -0
  28. package/apps/server/src/plugin-build/host-api-names.ts +185 -0
  29. package/apps/server/src/plugin-build/plugin-description.ts +118 -0
  30. package/apps/server/src/plugin-build/typecheck.ts +66 -0
  31. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/app-project.ts +16 -15
  32. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-compiler.ts +4 -4
  33. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-contracts.ts +4 -4
  34. package/apps/server/src/plugin-support/actor-programs/client-runtime.ts +27 -0
  35. package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/contract.ts +3 -3
  36. package/apps/server/src/plugin-support/actor-programs/service.ts +1 -1
  37. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/tailwind.ts +2 -3
  38. package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/index.ts +48 -48
  39. package/apps/server/src/plugin-support/agent-tool.ts +10 -5
  40. package/apps/server/src/plugin-support/http.ts +1 -1
  41. package/apps/server/src/plugin-support/language-server/contract.ts +37 -6
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +18 -8
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +32 -7
  44. package/apps/server/src/plugin-support/language-server/tools.ts +59 -15
  45. package/apps/server/src/plugin-support/model-aliases.ts +77 -0
  46. package/apps/server/src/plugin-support/model-choice.ts +17 -7
  47. package/apps/server/src/plugin-support/model-completion.ts +58 -0
  48. package/apps/server/src/plugin-support/model-upstreams.ts +2 -2
  49. package/apps/server/src/plugin-support/native-typescript-executor.ts +10 -7
  50. package/apps/server/src/plugin-support/plugin-config.ts +1 -1
  51. package/apps/server/src/plugin-support/plugin-folder.ts +4 -1
  52. package/apps/server/src/plugin-support/plugin-module.ts +1 -1
  53. package/apps/server/src/plugin-support/plugins-root.ts +6 -10
  54. package/apps/server/src/plugin-support/process-sandbox.ts +312 -0
  55. package/apps/server/src/plugin-support/product-model-settings-contract.ts +14 -5
  56. package/apps/server/src/plugin-support/product-model-settings.ts +10 -9
  57. package/{plugins/ragents.product/server/relay.ts → apps/server/src/plugin-support/product-relay.ts} +2 -2
  58. package/apps/server/src/plugin-support/product-start-options.ts +8 -3
  59. package/apps/server/src/plugin-support/prompt.ts +1 -1
  60. package/apps/server/src/plugin-support/provision.ts +6 -0
  61. package/apps/server/src/plugin-support/run-scripts.ts +16 -2
  62. package/apps/server/src/plugin-support/skills.ts +32 -16
  63. package/apps/server/src/plugin-support/start-entries-contract.ts +12 -3
  64. package/apps/server/src/plugin-support/start-options-contract.ts +5 -1
  65. package/apps/server/src/plugin-support/thinking-level.ts +6 -1
  66. package/apps/server/src/plugin-support/tool-availability.ts +1 -7
  67. package/apps/server/src/plugin-support/workspace-ownership.ts +12 -6
  68. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +184 -37
  69. package/apps/server/src/profile/bundle-manifest.ts +183 -0
  70. package/apps/server/src/profile/compose.ts +19 -10
  71. package/apps/server/src/profile/plugin-discovery.ts +98 -46
  72. package/apps/server/src/profile/provisioning.ts +30 -26
  73. package/apps/server/src/profile-target.ts +3 -0
  74. package/apps/server/src/provider.ts +182 -99
  75. package/apps/server/src/ragents/actor-chat-history.ts +23 -22
  76. package/apps/server/src/ragents/chat-projection.ts +25 -14
  77. package/apps/server/src/ragents/chat-text-positions.ts +4 -4
  78. package/apps/server/src/ragents/coordinator.ts +27 -1
  79. package/apps/server/src/ragents/document-store.ts +1 -1
  80. package/apps/server/src/ragents/engine.ts +69 -36
  81. package/apps/server/src/ragents/global-chat.ts +26 -13
  82. package/apps/server/src/ragents/host-services.ts +15 -6
  83. package/apps/server/src/ragents/journal-chat-events.ts +31 -15
  84. package/apps/server/src/ragents/product-runtime.ts +1 -1
  85. package/apps/server/src/ragents/run-owner.ts +17 -0
  86. package/apps/server/src/ragents/runtime-bridge.ts +1 -1
  87. package/apps/server/src/ragents/session.ts +181 -82
  88. package/apps/server/src/ragents/start-option-state.ts +1 -1
  89. package/apps/server/src/ragents/typescript-tools.ts +35 -27
  90. package/apps/server/src/ragents/workspace-runtime.ts +74 -8
  91. package/apps/server/src/rpc/dispatcher.ts +17 -8
  92. package/apps/server/src/rpc/http-transport.ts +1 -3
  93. package/apps/server/src/rpc/stdio-transport.ts +1 -1
  94. package/apps/server/src/run-preparation-contract.ts +1 -1
  95. package/apps/server/src/run-preparation-input.ts +1 -1
  96. package/apps/server/src/run-preparation.ts +13 -20
  97. package/apps/server/src/run-transfer.ts +2 -2
  98. package/apps/server/src/server.ts +112 -33
  99. package/apps/server/src/settings.ts +7 -8
  100. package/apps/server/src/title-compactor.ts +5 -8
  101. package/apps/server/src/title-settings.ts +3 -3
  102. package/apps/server/src/web-bundles.ts +79 -0
  103. package/apps/server/src/web-stylesheet.ts +85 -0
  104. package/apps/server/tsconfig.json +4 -4
  105. package/apps/server/tsconfig.plugin.json +58 -0
  106. package/apps/web/dist/assets/highlighted-body-KPVGNVTW-B9qYBARS.js +1 -0
  107. package/apps/web/dist/assets/main-BCjvD2Hh.js +6 -0
  108. package/apps/web/dist/assets/mermaid-HWGCJPDP-BPn4aV2r.css +1 -0
  109. package/apps/web/dist/assets/mermaid-HWGCJPDP-CvYYFK_n.js +478 -0
  110. package/apps/web/dist/assets/runPanel-CG7kRMJh.js +21 -0
  111. package/apps/web/dist/help/guide-access.html +199 -0
  112. package/apps/web/dist/help/guide-access.md +84 -0
  113. package/apps/web/dist/help/guide-clients.html +421 -0
  114. package/apps/web/dist/help/guide-clients.md +336 -0
  115. package/apps/web/dist/help/guide-distributed.html +320 -0
  116. package/apps/web/dist/help/guide-distributed.md +225 -0
  117. package/apps/web/dist/help/guide-functions.html +231 -0
  118. package/apps/web/dist/help/guide-functions.md +127 -0
  119. package/apps/web/dist/help/guide-getting-started.html +230 -0
  120. package/apps/web/dist/help/guide-getting-started.md +123 -0
  121. package/apps/web/dist/help/guide-ideas.html +183 -0
  122. package/apps/web/dist/help/guide-ideas.md +71 -0
  123. package/apps/web/dist/help/guide-plugins.html +450 -0
  124. package/apps/web/dist/help/guide-plugins.md +341 -0
  125. package/apps/web/dist/help/guide-programs.html +359 -0
  126. package/apps/web/dist/help/guide-programs.md +271 -0
  127. package/apps/web/dist/help/guide-runtime.html +338 -0
  128. package/apps/web/dist/help/guide-runtime.md +225 -0
  129. package/apps/web/dist/help/guide.html +133 -0
  130. package/apps/web/dist/help/guide.md +13 -0
  131. package/apps/web/dist/help/homepage-bullets.js +12 -0
  132. package/apps/web/dist/help/homepage-distributed.js +261 -0
  133. package/apps/web/dist/help/homepage-plugins.js +30 -0
  134. package/apps/web/dist/help/homepage-scenes.js +368 -0
  135. package/apps/web/dist/help/homepage-stickers.js +69 -0
  136. package/apps/web/dist/help/homepage-story-nav.js +11 -0
  137. package/apps/web/dist/help/homepage-subnav.js +61 -0
  138. package/apps/web/dist/help/homepage.css +833 -0
  139. package/apps/web/dist/help/index.html +1167 -0
  140. package/apps/web/dist/help/mini-app.css +7056 -0
  141. package/apps/web/dist/help/mini-app.html +15 -0
  142. package/apps/web/dist/help/mini-app.js +131 -0
  143. package/apps/web/dist/help/screenshots/release-checklist-vscode.png +0 -0
  144. package/apps/web/dist/help/screenshots/release-checklist-web.png +0 -0
  145. package/apps/web/dist/help/scroll-vendor.js +73 -0
  146. package/apps/web/dist/help/site.css +63 -0
  147. package/apps/web/dist/help/site.js +103 -0
  148. package/apps/web/dist/host-web.json +143 -0
  149. package/apps/web/dist/index.html +15 -0
  150. package/apps/web/dist/run-panel.html +15 -0
  151. package/apps/web/package.json +2 -2
  152. package/apps/web/src/App.tsx +8 -6
  153. package/apps/web/src/Overview.tsx +5 -5
  154. package/apps/web/src/PluginActivation.ts +25 -5
  155. package/apps/web/src/PluginChat.tsx +163 -129
  156. package/apps/web/src/PluginFailureNotice.tsx +15 -0
  157. package/apps/web/src/PluginRegistry.tsx +106 -68
  158. package/apps/web/src/RunPreparationChat.tsx +40 -28
  159. package/apps/web/src/RunStore.ts +2 -2
  160. package/apps/web/src/SettingsModal.tsx +37 -37
  161. package/apps/web/src/StartOptions.tsx +81 -26
  162. package/apps/web/src/StartSelection.tsx +111 -0
  163. package/apps/web/src/StartTiles.tsx +73 -0
  164. package/apps/web/src/{CanvasShortcuts.tsx → SurfaceShortcuts.tsx} +2 -2
  165. package/apps/web/src/ThemeSettings.tsx +1 -1
  166. package/apps/web/src/WorkspacePanel.tsx +4 -4
  167. package/apps/web/src/access-session.ts +4 -1
  168. package/{plugins/ragents.orchestration/web → apps/web/src}/actor-conversation.ts +3 -3
  169. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/DataTable.tsx +9 -9
  170. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FilePicker.tsx +4 -4
  171. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagram.tsx +16 -14
  172. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagramRenderer.tsx +3 -3
  173. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Form.tsx +12 -12
  174. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Layout.tsx +1 -1
  175. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/MessageList.tsx +5 -5
  176. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Viewers.tsx +8 -7
  177. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/WorkflowDiagram.tsx +1 -1
  178. package/apps/web/src/actor-programs/client-ui/chat-contracts.d.ts +64 -0
  179. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/contracts.d.ts +2 -2
  180. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-selection.ts +5 -5
  181. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/index.tsx +22 -16
  182. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/layout-contracts.d.ts +1 -1
  183. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/message-list-contracts.d.ts +2 -2
  184. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/workflow-diagram-contracts.d.ts +1 -1
  185. package/apps/web/src/api.ts +43 -22
  186. package/apps/web/src/chat/QuasselHost.tsx +12 -0
  187. package/apps/web/src/chat/StoppedActorNotice.tsx +39 -0
  188. package/apps/web/src/chat/chat-target.ts +14 -5
  189. package/apps/web/src/chat/requests.ts +13 -5
  190. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  191. package/apps/web/src/chat/useChat.ts +8 -7
  192. package/apps/web/src/chat/user-location.ts +1 -1
  193. package/apps/web/src/chat-view-settings.tsx +49 -0
  194. package/apps/web/src/host-modules.ts +90 -0
  195. package/apps/web/src/language-server/api.ts +24 -0
  196. package/{plugins/ragents.lsp-roslyn/web → apps/web/src/language-server}/language-server-plugin.tsx +133 -6
  197. package/apps/web/src/main.tsx +4 -2
  198. package/apps/web/src/offered-machines.ts +11 -0
  199. package/apps/web/src/panel/ConnectionsPage.tsx +117 -0
  200. package/apps/web/src/panel/LoginForm.tsx +9 -9
  201. package/apps/web/src/panel/PanelDialogs.tsx +44 -27
  202. package/apps/web/src/panel/PanelHeader.tsx +11 -0
  203. package/apps/web/src/panel/PanelPage.tsx +8 -5
  204. package/apps/web/src/panel/RunLine.tsx +48 -0
  205. package/apps/web/src/panel/RunsPage.tsx +84 -0
  206. package/apps/web/src/panel/StartPage.tsx +163 -0
  207. package/apps/web/src/panel/connection-state.ts +40 -0
  208. package/apps/web/src/panel/contract.ts +64 -21
  209. package/apps/web/src/panel/page-props.ts +6 -0
  210. package/apps/web/src/plugin-bootstrap.ts +60 -31
  211. package/{plugins/ragents.product/web → apps/web/src/product}/ModelControl.tsx +3 -3
  212. package/{plugins/ragents.product/web → apps/web/src/product}/ProductModelSettings.tsx +7 -7
  213. package/{plugins/ragents.product/web → apps/web/src/product}/SystemPromptControl.tsx +3 -3
  214. package/{plugins/ragents.product/web → apps/web/src/product}/model-settings.ts +3 -3
  215. package/{plugins/ragents.product/web → apps/web/src/product}/start-options.tsx +2 -2
  216. package/apps/web/src/rpc/client.ts +28 -6
  217. package/apps/web/src/run-panel/RunPanelApp.tsx +334 -0
  218. package/apps/web/src/{column/ColumnRunHeader.tsx → run-panel/RunPanelHeader.tsx} +2 -2
  219. package/apps/web/src/{column/ColumnMenu.tsx → run-panel/RunPanelMenu.tsx} +4 -4
  220. package/apps/web/src/run-panel/RunPanelRail.tsx +38 -0
  221. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +55 -0
  222. package/apps/web/src/{column → run-panel}/clipboard.ts +21 -10
  223. package/apps/web/src/run-panel/host-contract.ts +123 -0
  224. package/apps/web/src/{column → run-panel}/host.ts +31 -23
  225. package/apps/web/src/run-panel/input-bridge.ts +75 -0
  226. package/apps/web/src/run-panel/keyboard.ts +53 -0
  227. package/apps/web/src/run-panel/run-panel-location.ts +35 -0
  228. package/apps/web/src/{column → run-panel}/use-session-list.ts +3 -3
  229. package/apps/web/src/run-panel/workspace-state.ts +43 -0
  230. package/apps/web/src/{column.tsx → run-panel.tsx} +20 -13
  231. package/apps/web/src/run-preparation.ts +1 -1
  232. package/{plugins/ragents.orchestration/web → apps/web/src}/run-view.ts +25 -7
  233. package/apps/web/src/settings-contributions.ts +16 -18
  234. package/apps/web/src/title-model-settings.ts +1 -1
  235. package/apps/web/src/toolLine.ts +1 -1
  236. package/apps/web/src/ui/ListDetail.tsx +1 -1
  237. package/apps/web/src/ui/dialog.tsx +5 -5
  238. package/apps/web/src/ui/frame.css +1 -0
  239. package/apps/web/src/ui/index.ts +5 -0
  240. package/apps/web/src/ui/popover.tsx +2 -2
  241. package/apps/web/src/ui/quassel.css +41 -0
  242. package/apps/web/src/ui/relative-time.ts +36 -0
  243. package/apps/web/src/ui/startup-notice.tsx +22 -0
  244. package/apps/web/src/ui/state-icon.tsx +60 -0
  245. package/apps/web/src/ui/state-vocabulary.ts +31 -0
  246. package/apps/web/src/ui/stop-button.tsx +22 -0
  247. package/apps/web/src/ui/tailwind.css +2 -3
  248. package/apps/web/src/ui/theme.css +19 -19
  249. package/apps/web/tsconfig.json +4 -5
  250. package/apps/web/tsconfig.plugin.json +44 -0
  251. package/bundles/ragents.activity/ragents-bundle.json +38 -0
  252. package/bundles/ragents.activity/server/index.js +14 -0
  253. package/bundles/ragents.activity/server/index.js.map +7 -0
  254. package/bundles/ragents.activity/web/classes.json +1 -0
  255. package/bundles/ragents.activity/web/index.js +2 -0
  256. package/bundles/ragents.activity/web/index.js.map +7 -0
  257. package/bundles/ragents.actor-programs/prompt.hbs +80 -0
  258. package/bundles/ragents.actor-programs/ragents-bundle.json +214 -0
  259. package/bundles/ragents.actor-programs/server/index.js +2071 -0
  260. package/bundles/ragents.actor-programs/server/index.js.map +7 -0
  261. package/bundles/ragents.actor-programs/summary.hbs +17 -0
  262. package/bundles/ragents.actor-programs/web/classes.json +1 -0
  263. package/bundles/ragents.actor-programs/web/index.js +27 -0
  264. package/bundles/ragents.actor-programs/web/index.js.map +7 -0
  265. package/bundles/ragents.ask/ask.hbs +4 -0
  266. package/bundles/ragents.ask/ragents-bundle.json +97 -0
  267. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js +13 -0
  268. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +7 -0
  269. package/bundles/ragents.ask/server/exports/server/contract.js +11 -0
  270. package/bundles/ragents.ask/server/exports/server/contract.js.map +7 -0
  271. package/bundles/ragents.ask/server/index.js +279 -0
  272. package/bundles/ragents.ask/server/index.js.map +7 -0
  273. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +2 -0
  274. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +7 -0
  275. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +2 -0
  276. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +7 -0
  277. package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js +25 -0
  278. package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map +7 -0
  279. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +2 -0
  280. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +7 -0
  281. package/bundles/ragents.ask/web/classes.json +1 -0
  282. package/bundles/ragents.ask/web/exports/ask-payload.js +2 -0
  283. package/bundles/ragents.ask/web/exports/ask-payload.js.map +7 -0
  284. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +2 -0
  285. package/bundles/ragents.ask/web/exports/web/QuestionCard.js.map +7 -0
  286. package/bundles/ragents.ask/web/exports/web/api.js +2 -0
  287. package/bundles/ragents.ask/web/exports/web/api.js.map +7 -0
  288. package/bundles/ragents.ask/web/index.js +2 -0
  289. package/bundles/ragents.ask/web/index.js.map +7 -0
  290. package/bundles/ragents.browser/ragents-bundle.json +53 -0
  291. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js +11 -0
  292. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +7 -0
  293. package/bundles/ragents.browser/server/exports/server/contract.js +9 -0
  294. package/bundles/ragents.browser/server/exports/server/contract.js.map +7 -0
  295. package/bundles/ragents.browser/server/index.js +479 -0
  296. package/bundles/ragents.browser/server/index.js.map +7 -0
  297. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +38 -0
  298. package/bundles/ragents.documents/prompt.hbs +18 -0
  299. package/bundles/ragents.documents/ragents-bundle.json +120 -0
  300. package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js +37 -0
  301. package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js.map +7 -0
  302. package/bundles/ragents.documents/server/exports/contract.js +11 -0
  303. package/bundles/ragents.documents/server/exports/contract.js.map +7 -0
  304. package/bundles/ragents.documents/server/index.js +290 -0
  305. package/bundles/ragents.documents/server/index.js.map +7 -0
  306. package/bundles/ragents.documents/web/classes.json +1 -0
  307. package/bundles/ragents.documents/web/index.js +26 -0
  308. package/bundles/ragents.documents/web/index.js.map +7 -0
  309. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +49 -0
  310. package/bundles/ragents.lsp-fsharp/server/index.js +82 -0
  311. package/bundles/ragents.lsp-fsharp/server/index.js.map +7 -0
  312. package/bundles/ragents.lsp-fsharp/web/classes.json +1 -0
  313. package/bundles/ragents.lsp-fsharp/web/index.js +2 -0
  314. package/bundles/ragents.lsp-fsharp/web/index.js.map +7 -0
  315. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +61 -0
  316. package/bundles/ragents.lsp-roslyn/server/index.js +208 -0
  317. package/bundles/ragents.lsp-roslyn/server/index.js.map +7 -0
  318. package/bundles/ragents.lsp-roslyn/web/classes.json +1 -0
  319. package/bundles/ragents.lsp-roslyn/web/index.js +2 -0
  320. package/bundles/ragents.lsp-roslyn/web/index.js.map +7 -0
  321. package/bundles/ragents.lsp-typescript/ragents-bundle.json +36 -0
  322. package/bundles/ragents.lsp-typescript/server/index.js +13 -0
  323. package/bundles/ragents.lsp-typescript/server/index.js.map +7 -0
  324. package/bundles/ragents.lsp-typescript/web/classes.json +1 -0
  325. package/bundles/ragents.lsp-typescript/web/index.js +2 -0
  326. package/bundles/ragents.lsp-typescript/web/index.js.map +7 -0
  327. package/bundles/ragents.model-relay/ragents-bundle.json +33 -0
  328. package/bundles/ragents.model-relay/server/index.js +230 -0
  329. package/bundles/ragents.model-relay/server/index.js.map +7 -0
  330. package/bundles/ragents.orchestration/orchestration.hbs +106 -0
  331. package/bundles/ragents.orchestration/ragents-bundle.json +194 -0
  332. package/bundles/ragents.orchestration/server/index.js +277 -0
  333. package/bundles/ragents.orchestration/server/index.js.map +7 -0
  334. package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js +2 -0
  335. package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js.map +7 -0
  336. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +2 -0
  337. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js.map +7 -0
  338. package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js +2 -0
  339. package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js.map +7 -0
  340. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +2 -0
  341. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +7 -0
  342. package/bundles/ragents.orchestration/web/classes.json +1 -0
  343. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +2 -0
  344. package/bundles/ragents.orchestration/web/exports/web/program-slot.js.map +7 -0
  345. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +2 -0
  346. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +7 -0
  347. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +2 -0
  348. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +7 -0
  349. package/bundles/ragents.orchestration/web/index.js +51 -0
  350. package/bundles/ragents.orchestration/web/index.js.map +7 -0
  351. package/bundles/ragents.overseer/ragents-bundle.json +144 -0
  352. package/bundles/ragents.overseer/server/index.js +652 -0
  353. package/bundles/ragents.overseer/server/index.js.map +7 -0
  354. package/bundles/ragents.overseer/web/classes.json +1 -0
  355. package/bundles/ragents.overseer/web/index.js +25 -0
  356. package/bundles/ragents.overseer/web/index.js.map +7 -0
  357. package/bundles/ragents.processes/ragents-bundle.json +93 -0
  358. package/bundles/ragents.processes/server/index.js +204 -0
  359. package/bundles/ragents.processes/server/index.js.map +7 -0
  360. package/bundles/ragents.processes/web/classes.json +1 -0
  361. package/bundles/ragents.processes/web/index.js +4 -0
  362. package/bundles/ragents.processes/web/index.js.map +7 -0
  363. package/bundles/ragents.product/preamble.hbs +9 -0
  364. package/bundles/ragents.product/ragents-bundle.json +93 -0
  365. package/bundles/ragents.product/server/index.js +208 -0
  366. package/bundles/ragents.product/server/index.js.map +7 -0
  367. package/bundles/ragents.product/web/classes.json +1 -0
  368. package/bundles/ragents.product/web/index.js +2 -0
  369. package/bundles/ragents.product/web/index.js.map +7 -0
  370. package/bundles/ragents.profile-distribution/ragents-bundle.json +64 -0
  371. package/bundles/ragents.profile-distribution/server/index.js +241 -0
  372. package/bundles/ragents.profile-distribution/server/index.js.map +7 -0
  373. package/bundles/ragents.reference/ragents-bundle.json +39 -0
  374. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +27 -0
  375. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +10 -0
  376. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +80 -0
  377. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +82 -0
  378. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +154 -0
  379. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +9 -0
  380. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +32 -0
  381. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +59 -0
  382. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +13 -0
  383. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +9 -0
  384. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +81 -0
  385. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +26 -0
  386. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +34 -0
  387. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +24 -0
  388. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +10 -0
  389. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -0
  390. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +5 -0
  391. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -0
  392. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +27 -0
  393. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +137 -0
  394. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/state.ts +38 -0
  395. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +42 -0
  396. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +38 -0
  397. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +218 -0
  398. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +12 -0
  399. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +9 -0
  400. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +60 -0
  401. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +26 -0
  402. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +24 -0
  403. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +18 -0
  404. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +16 -0
  405. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +39 -0
  406. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +15 -0
  407. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/server.ts +14 -0
  408. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +13 -0
  409. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +9 -0
  410. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +65 -0
  411. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +26 -0
  412. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +42 -0
  413. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +25 -0
  414. package/bundles/ragents.reference/run-scripts/word-game/package.json +11 -0
  415. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +27 -0
  416. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +23 -0
  417. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +105 -0
  418. package/bundles/ragents.reference/run-scripts/word-game/src/state.ts +22 -0
  419. package/bundles/ragents.reference/run-scripts/word-game/src/view.tsx +54 -0
  420. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +252 -0
  421. package/bundles/ragents.reference/server/index.js +16 -0
  422. package/bundles/ragents.reference/server/index.js.map +7 -0
  423. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +12 -0
  424. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +12 -0
  425. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +12 -0
  426. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +12 -0
  427. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +12 -0
  428. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +12 -0
  429. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +12 -0
  430. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +12 -0
  431. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +12 -0
  432. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +12 -0
  433. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +12 -0
  434. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +12 -0
  435. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +12 -0
  436. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +12 -0
  437. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +12 -0
  438. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +12 -0
  439. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +12 -0
  440. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +12 -0
  441. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +12 -0
  442. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +12 -0
  443. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +12 -0
  444. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +12 -0
  445. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +12 -0
  446. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +12 -0
  447. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +12 -0
  448. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +33 -0
  449. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +33 -0
  450. package/bundles/ragents.reference/web/classes.json +1 -0
  451. package/bundles/ragents.reference/web/index.js +2 -0
  452. package/bundles/ragents.reference/web/index.js.map +7 -0
  453. package/bundles/ragents.todo/ragents-bundle.json +48 -0
  454. package/bundles/ragents.todo/server/index.js +108 -0
  455. package/bundles/ragents.todo/server/index.js.map +7 -0
  456. package/bundles/ragents.todo/web/classes.json +1 -0
  457. package/bundles/ragents.todo/web/index.js +2 -0
  458. package/bundles/ragents.todo/web/index.js.map +7 -0
  459. package/bundles/ragents.transcript/ragents-bundle.json +34 -0
  460. package/bundles/ragents.transcript/server/index.js +102 -0
  461. package/bundles/ragents.transcript/server/index.js.map +7 -0
  462. package/bundles/ragents.watch/ragents-bundle.json +39 -0
  463. package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js +11 -0
  464. package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js.map +7 -0
  465. package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js +10 -0
  466. package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js.map +7 -0
  467. package/bundles/ragents.watch/server/exports/contract.js +9 -0
  468. package/bundles/ragents.watch/server/exports/contract.js.map +7 -0
  469. package/bundles/ragents.watch/server/exports/server/contract.js +9 -0
  470. package/bundles/ragents.watch/server/exports/server/contract.js.map +7 -0
  471. package/bundles/ragents.watch/server/index.js +482 -0
  472. package/bundles/ragents.watch/server/index.js.map +7 -0
  473. package/bundles/ragents.workspace/prompt.hbs +7 -0
  474. package/bundles/ragents.workspace/ragents-bundle.json +148 -0
  475. package/bundles/ragents.workspace/server/index.js +1049 -0
  476. package/bundles/ragents.workspace/server/index.js.map +7 -0
  477. package/bundles/ragents.workspace/web/classes.json +1 -0
  478. package/bundles/ragents.workspace/web/index.js +39 -0
  479. package/bundles/ragents.workspace/web/index.js.map +7 -0
  480. package/package.json +4 -15
  481. package/packages/agent/dist/core/agent-session-runtime.d.ts +33 -0
  482. package/packages/agent/dist/core/agent-session-services.d.ts +35 -0
  483. package/packages/agent/dist/core/agent-session.d.ts +234 -0
  484. package/packages/agent/dist/core/agent-settings.d.ts +27 -0
  485. package/packages/agent/dist/core/auth-guidance.d.ts +4 -0
  486. package/packages/agent/dist/core/compaction/compaction.d.ts +116 -0
  487. package/packages/agent/dist/core/compaction/index.d.ts +6 -0
  488. package/packages/agent/dist/core/compaction/utils.d.ts +39 -0
  489. package/packages/agent/dist/core/defaults.d.ts +3 -0
  490. package/packages/agent/dist/core/extensions/index.d.ts +11 -0
  491. package/packages/agent/dist/core/extensions/loader.d.ts +12 -0
  492. package/packages/agent/dist/core/extensions/runner.d.ts +39 -0
  493. package/packages/agent/dist/core/extensions/types.d.ts +156 -0
  494. package/packages/agent/dist/core/extensions/wrapper.d.ts +12 -0
  495. package/packages/agent/dist/core/messages.d.ts +37 -0
  496. package/packages/agent/dist/core/model-runtime.d.ts +32 -0
  497. package/packages/agent/dist/core/provider-composer.d.ts +25 -0
  498. package/packages/agent/dist/core/resource-loader.d.ts +39 -0
  499. package/packages/agent/dist/core/sdk.d.ts +38 -0
  500. package/packages/agent/dist/core/session-manager.d.ts +189 -0
  501. package/packages/agent/dist/core/skills.d.ts +20 -0
  502. package/packages/agent/dist/core/source-info.d.ts +16 -0
  503. package/packages/agent/dist/core/system-prompt.d.ts +21 -0
  504. package/packages/agent/dist/core/tools/bash.d.ts +63 -0
  505. package/packages/agent/dist/core/tools/edit-diff.d.ts +98 -0
  506. package/packages/agent/dist/core/tools/edit.d.ts +41 -0
  507. package/packages/agent/dist/core/tools/file-mutation-queue.d.ts +6 -0
  508. package/packages/agent/dist/core/tools/index.d.ts +5 -0
  509. package/packages/agent/dist/core/tools/output-accumulator.d.ts +58 -0
  510. package/packages/agent/dist/core/tools/path-utils.d.ts +8 -0
  511. package/packages/agent/dist/core/tools/read.d.ts +33 -0
  512. package/packages/agent/dist/core/tools/truncate.d.ts +61 -0
  513. package/packages/agent/dist/core/tools/write.d.ts +23 -0
  514. package/packages/agent/dist/index.d.ts +13 -0
  515. package/packages/agent/dist/loop/agent-loop.d.ts +13 -0
  516. package/packages/agent/dist/loop/agent.d.ts +103 -0
  517. package/packages/agent/dist/loop/index.d.ts +5 -0
  518. package/packages/agent/dist/loop/types.d.ts +333 -0
  519. package/packages/agent/dist/loop/uuid.d.ts +2 -0
  520. package/packages/agent/dist/utils/child-process.d.ts +17 -0
  521. package/packages/agent/dist/utils/exif-orientation.d.ts +5 -0
  522. package/packages/agent/dist/utils/frontmatter.d.ts +8 -0
  523. package/packages/agent/dist/utils/image-convert.d.ts +2 -0
  524. package/packages/agent/dist/utils/image-process.d.ts +18 -0
  525. package/packages/agent/dist/utils/image-resize-core.d.ts +30 -0
  526. package/packages/agent/dist/utils/image-resize-worker.d.ts +2 -0
  527. package/packages/agent/dist/utils/image-resize.d.ts +16 -0
  528. package/packages/agent/dist/utils/mime.d.ts +3 -0
  529. package/packages/agent/dist/utils/paths.d.ts +15 -0
  530. package/packages/agent/dist/utils/photon.d.ts +21 -0
  531. package/packages/agent/dist/utils/shell.d.ts +17 -0
  532. package/packages/agent/dist/utils/sleep.d.ts +5 -0
  533. package/packages/agent/package.json +3 -32
  534. package/packages/agent/src/core/agent-session-runtime.ts +15 -469
  535. package/packages/agent/src/core/agent-session-services.ts +17 -167
  536. package/packages/agent/src/core/agent-session.ts +154 -2403
  537. package/packages/agent/src/core/agent-settings.ts +20 -0
  538. package/packages/agent/src/core/auth-guidance.ts +0 -4
  539. package/packages/agent/src/core/compaction/compaction.ts +4 -33
  540. package/packages/agent/src/core/compaction/index.ts +0 -1
  541. package/packages/agent/src/core/compaction/utils.ts +2 -2
  542. package/packages/agent/src/core/defaults.ts +1 -1
  543. package/packages/agent/src/core/extensions/index.ts +6 -117
  544. package/packages/agent/src/core/extensions/loader.ts +21 -605
  545. package/packages/agent/src/core/extensions/runner.ts +48 -969
  546. package/packages/agent/src/core/extensions/types.ts +35 -1298
  547. package/packages/agent/src/core/extensions/wrapper.ts +13 -34
  548. package/packages/agent/src/core/messages.ts +5 -109
  549. package/packages/agent/src/core/model-runtime.ts +109 -467
  550. package/packages/agent/src/core/provider-composer.ts +21 -451
  551. package/packages/agent/src/core/resource-loader.ts +18 -822
  552. package/packages/agent/src/core/sdk.ts +46 -281
  553. package/packages/agent/src/core/session-manager.ts +11 -891
  554. package/packages/agent/src/core/skills.ts +8 -440
  555. package/packages/agent/src/core/source-info.ts +0 -12
  556. package/packages/agent/src/core/system-prompt.ts +2 -41
  557. package/packages/agent/src/core/tools/bash.ts +20 -32
  558. package/packages/agent/src/core/tools/edit-diff.ts +0 -60
  559. package/packages/agent/src/core/tools/edit.ts +2 -18
  560. package/packages/agent/src/core/tools/index.ts +4 -130
  561. package/packages/agent/src/core/tools/output-accumulator.ts +33 -5
  562. package/packages/agent/src/core/tools/path-utils.ts +2 -49
  563. package/packages/agent/src/core/tools/read.ts +4 -12
  564. package/packages/agent/src/core/tools/truncate.ts +0 -15
  565. package/packages/agent/src/core/tools/write.ts +1 -8
  566. package/packages/agent/src/index.ts +11 -272
  567. package/packages/{agent-core/src → agent/src/loop}/agent-loop.ts +127 -273
  568. package/packages/{agent-core/src → agent/src/loop}/agent.ts +12 -164
  569. package/packages/{agent-core/src → agent/src/loop}/types.ts +6 -105
  570. package/packages/agent/src/utils/child-process.ts +0 -13
  571. package/packages/agent/src/utils/image-convert.ts +0 -25
  572. package/packages/agent/src/utils/paths.ts +1 -71
  573. package/packages/agent/src/utils/shell.ts +13 -156
  574. package/packages/ai/dist/api/ai-sdk-messages.d.ts +9 -0
  575. package/packages/ai/dist/api/ai-sdk-transport.d.ts +13 -0
  576. package/packages/ai/dist/api/ai-sdk.d.ts +13 -0
  577. package/packages/ai/dist/api/ai-sdk.lazy.d.ts +3 -0
  578. package/packages/ai/dist/api/lazy.d.ts +15 -0
  579. package/packages/ai/dist/api/simple-options.d.ts +4 -0
  580. package/packages/ai/dist/api/transform-messages.d.ts +8 -0
  581. package/packages/ai/dist/api-registry.d.ts +25 -0
  582. package/packages/ai/dist/auth/context.d.ts +4 -0
  583. package/packages/ai/dist/auth/helpers.d.ts +4 -0
  584. package/packages/ai/dist/auth/resolve.d.ts +19 -0
  585. package/packages/ai/dist/auth/types.d.ts +51 -0
  586. package/packages/ai/dist/env-api-keys.d.ts +8 -0
  587. package/packages/ai/dist/index.d.ts +19 -0
  588. package/packages/ai/dist/models.d.ts +71 -0
  589. package/packages/ai/dist/models.generated.d.ts +8021 -0
  590. package/packages/ai/dist/providers/all.d.ts +15 -0
  591. package/packages/ai/dist/providers/faux.d.ts +97 -0
  592. package/packages/ai/dist/providers/openrouter.d.ts +3 -0
  593. package/packages/ai/dist/providers/openrouter.models.d.ts +8019 -0
  594. package/packages/ai/dist/types.d.ts +541 -0
  595. package/packages/ai/dist/utils/diagnostics.d.ts +13 -0
  596. package/packages/ai/dist/utils/error-body.d.ts +25 -0
  597. package/packages/ai/dist/utils/estimate.d.ts +17 -0
  598. package/packages/ai/dist/utils/event-stream.d.ts +21 -0
  599. package/packages/ai/dist/utils/headers.d.ts +2 -0
  600. package/packages/ai/dist/utils/json-parse.d.ts +16 -0
  601. package/packages/ai/dist/utils/overflow.d.ts +54 -0
  602. package/packages/ai/dist/utils/provider-env.d.ts +7 -0
  603. package/packages/ai/dist/utils/retry.d.ts +12 -0
  604. package/packages/ai/dist/utils/sanitize-unicode.d.ts +22 -0
  605. package/packages/ai/dist/utils/typebox-helpers.d.ts +17 -0
  606. package/packages/ai/dist/utils/validation.d.ts +10 -0
  607. package/packages/ai/package.json +2 -6
  608. package/packages/ai/src/api/ai-sdk-transport.ts +2 -2
  609. package/packages/ai/src/api/simple-options.ts +0 -34
  610. package/packages/ai/src/api-registry.ts +1 -12
  611. package/packages/ai/src/auth/context.ts +1 -30
  612. package/packages/ai/src/auth/helpers.ts +3 -34
  613. package/packages/ai/src/auth/resolve.ts +10 -108
  614. package/packages/ai/src/auth/types.ts +9 -176
  615. package/packages/ai/src/index.ts +1 -13
  616. package/packages/ai/src/models.ts +41 -407
  617. package/packages/ai/src/providers/all.ts +3 -31
  618. package/packages/ai/src/providers/openrouter.models.ts +14 -0
  619. package/packages/ai/src/types.ts +0 -104
  620. package/packages/ai/src/utils/diagnostics.ts +0 -32
  621. package/packages/ai/src/utils/headers.ts +0 -11
  622. package/packages/ai/src/utils/overflow.ts +0 -7
  623. package/packages/ai/src/utils/validation.ts +0 -15
  624. package/packages/ragents/package.json +3 -6
  625. package/packages/ragents/src/access.ts +2 -1
  626. package/packages/ragents/src/agents/actor-input.ts +14 -18
  627. package/packages/ragents/src/agents/catalog.ts +3 -3
  628. package/packages/ragents/src/agents/plugins.ts +0 -4
  629. package/packages/ragents/src/agents/scheduler.ts +232 -78
  630. package/packages/ragents/src/agents/schemas.ts +1 -36
  631. package/packages/ragents/src/agents/tool-orientation.ts +1 -1
  632. package/packages/ragents/src/agents/tools.ts +72 -73
  633. package/packages/ragents/src/agents/toolset.ts +5 -5
  634. package/packages/ragents/src/agents/turn.ts +2 -14
  635. package/packages/ragents/src/agents/workspaces.ts +18 -0
  636. package/packages/ragents/src/domain/actor-reference.ts +22 -0
  637. package/packages/ragents/src/domain/driver.ts +0 -9
  638. package/packages/ragents/src/domain/event-semantics.ts +62 -74
  639. package/packages/ragents/src/domain/event-validation.ts +22 -21
  640. package/packages/ragents/src/domain/events.ts +19 -7
  641. package/packages/ragents/src/domain/json.ts +2 -0
  642. package/packages/ragents/src/domain/model.ts +40 -18
  643. package/packages/ragents/src/domain/projection.ts +43 -15
  644. package/packages/ragents/src/domain/schema-errors.ts +3 -3
  645. package/packages/ragents/src/drivers/agent-hooks.ts +40 -0
  646. package/packages/ragents/src/drivers/agent-runtime.ts +118 -186
  647. package/packages/ragents/src/drivers/agent.ts +5 -20
  648. package/packages/ragents/src/drivers/attachments.ts +4 -24
  649. package/packages/ragents/src/drivers/skill-preload.ts +4 -16
  650. package/packages/ragents/src/drivers/types.ts +20 -3
  651. package/packages/ragents/src/http/contracts.ts +16 -3
  652. package/packages/ragents/src/http/methods.ts +32 -33
  653. package/packages/ragents/src/index.ts +5 -15
  654. package/packages/ragents/src/plugin-host.ts +151 -105
  655. package/packages/ragents/src/plugin-types.ts +86 -23
  656. package/packages/ragents/src/rpc/peer.ts +6 -0
  657. package/packages/ragents/src/runtime/decisions/actions.ts +40 -37
  658. package/packages/ragents/src/runtime/decisions/actors.ts +90 -51
  659. package/packages/ragents/src/runtime/decisions/artifacts.ts +2 -2
  660. package/packages/ragents/src/runtime/decisions/inputs.ts +3 -3
  661. package/packages/ragents/src/runtime/decisions/subscriptions.ts +9 -7
  662. package/packages/ragents/src/runtime/decisions/turns.ts +37 -4
  663. package/packages/ragents/src/runtime/guards.ts +12 -21
  664. package/packages/ragents/src/runtime/journal-storage.ts +4 -2
  665. package/packages/ragents/src/runtime/journal.ts +1 -1
  666. package/packages/ragents/src/runtime/orchestration.ts +31 -14
  667. package/packages/ragents/src/runtime/serial-queue.ts +24 -0
  668. package/packages/ragents/src/runtime/stop.ts +19 -44
  669. package/packages/ragents/src/script/mediators.ts +4 -5
  670. package/packages/ragents/src/typescript/index.ts +2 -0
  671. package/packages/ragents/src/typescript/run-context.ts +10 -8
  672. package/packages/ragents/src/typescript/snippet.ts +7 -6
  673. package/packages/workspace-executor/package.json +2 -2
  674. package/packages/workspace-executor/src/bash-launch.ts +45 -0
  675. package/packages/workspace-executor/src/browser/contract.ts +71 -0
  676. package/packages/workspace-executor/src/browser/module.ts +74 -0
  677. package/packages/workspace-executor/src/browser/pages.ts +298 -0
  678. package/packages/workspace-executor/src/browser/playwright.ts +52 -0
  679. package/packages/workspace-executor/src/commands.ts +170 -0
  680. package/packages/workspace-executor/src/context.ts +34 -6
  681. package/packages/workspace-executor/src/errors.ts +12 -0
  682. package/packages/workspace-executor/src/executor.ts +62 -104
  683. package/packages/workspace-executor/src/files.ts +287 -0
  684. package/packages/workspace-executor/src/index.ts +82 -18
  685. package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +1 -0
  686. package/packages/workspace-executor/src/language-server/contract.ts +14 -0
  687. package/packages/workspace-executor/src/language-server/host.ts +82 -26
  688. package/packages/workspace-executor/src/language-server/module.ts +107 -0
  689. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +90 -0
  690. package/packages/workspace-executor/src/managed-process.ts +1 -1
  691. package/packages/workspace-executor/src/module.ts +35 -0
  692. package/packages/workspace-executor/src/modules.ts +25 -0
  693. package/packages/workspace-executor/src/paths.ts +57 -5
  694. package/packages/workspace-executor/src/process-sandbox.ts +16 -0
  695. package/packages/workspace-executor/src/processes/module.ts +48 -0
  696. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/process-table.ts +80 -57
  697. package/packages/workspace-executor/src/processes/scanner.ts +106 -0
  698. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/snapshot.ts +23 -11
  699. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/terminator.ts +19 -20
  700. package/packages/workspace-executor/src/run-folders.ts +33 -0
  701. package/packages/workspace-executor/src/safe-environment.ts +14 -0
  702. package/packages/workspace-executor/src/sandbox-tools.ts +206 -36
  703. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  704. package/plugins/package.json +1 -1
  705. package/plugins/ragents.activity/ragents-plugin.json +3 -0
  706. package/plugins/ragents.activity/server/index.ts +2 -2
  707. package/plugins/ragents.activity/web/ActivityHeader.tsx +2 -2
  708. package/plugins/ragents.activity/web/activity.ts +1 -1
  709. package/plugins/ragents.activity/web/index.tsx +1 -1
  710. package/plugins/ragents.actor-programs/prompt.hbs +8 -7
  711. package/plugins/ragents.actor-programs/ragents-plugin.json +3 -0
  712. package/plugins/ragents.actor-programs/server/agent-tools.ts +3 -3
  713. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/capability-resolver.ts +1 -16
  714. package/plugins/ragents.actor-programs/server/controls-template.ts +5 -18
  715. package/plugins/ragents.actor-programs/server/controls-tool.ts +8 -11
  716. package/plugins/ragents.actor-programs/server/index.ts +10 -10
  717. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/limits.ts +4 -4
  718. package/plugins/ragents.actor-programs/server/methods.ts +2 -2
  719. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/operations.ts +2 -4
  720. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +65 -70
  721. package/plugins/ragents.actor-programs/server/prompts.ts +4 -4
  722. package/plugins/ragents.actor-programs/server/routes.ts +14 -8
  723. package/plugins/ragents.actor-programs/server/runtime.ts +132 -55
  724. package/plugins/ragents.actor-programs/server/templates.ts +35 -80
  725. package/plugins/ragents.actor-programs/server/test-report.ts +106 -0
  726. package/plugins/ragents.actor-programs/server/tool-contributor.ts +4 -4
  727. package/plugins/ragents.actor-programs/summary.hbs +1 -1
  728. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +15 -10
  729. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +47 -30
  730. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +15 -17
  731. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +3 -3
  732. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +3 -3
  733. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +12 -3
  734. package/plugins/ragents.actor-programs/web/api.ts +5 -5
  735. package/plugins/ragents.actor-programs/web/bridge.ts +2 -3
  736. package/plugins/ragents.actor-programs/web/chat-state.ts +9 -8
  737. package/plugins/ragents.actor-programs/web/index.tsx +7 -17
  738. package/plugins/ragents.actor-programs/web/program-state.ts +3 -3
  739. package/plugins/ragents.actor-programs/web/state-revision.ts +2 -2
  740. package/plugins/ragents.ask/ask-payload.ts +25 -0
  741. package/plugins/ragents.ask/contract.ts +2 -2
  742. package/plugins/ragents.ask/ragents-plugin.json +7 -0
  743. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  744. package/plugins/ragents.ask/server/ask-service.ts +43 -19
  745. package/plugins/ragents.ask/server/ask-tool.ts +2 -2
  746. package/plugins/ragents.ask/server/contract.ts +9 -1
  747. package/plugins/ragents.ask/server/index.ts +8 -10
  748. package/plugins/ragents.ask/server/tool-contributor.ts +3 -3
  749. package/plugins/ragents.ask/web/AskActionView.tsx +36 -0
  750. package/{apps/web/src/chat → plugins/ragents.ask/web}/QuestionCard.tsx +7 -5
  751. package/plugins/ragents.ask/web/QuestionSection.tsx +22 -21
  752. package/plugins/ragents.ask/web/api.ts +1 -1
  753. package/plugins/ragents.ask/web/index.tsx +11 -8
  754. package/plugins/ragents.browser/provision.ts +9 -8
  755. package/plugins/ragents.browser/ragents-plugin.json +6 -0
  756. package/plugins/ragents.browser/server/browser.ts +165 -286
  757. package/plugins/ragents.browser/server/contract.ts +8 -19
  758. package/plugins/ragents.browser/server/index.ts +8 -7
  759. package/plugins/ragents.browser/server/tools.ts +29 -37
  760. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +3 -1
  761. package/plugins/ragents.documents/contract.ts +4 -2
  762. package/plugins/ragents.documents/ragents-plugin.json +6 -0
  763. package/plugins/ragents.documents/server/config.ts +1 -1
  764. package/plugins/ragents.documents/server/document-write-tool.ts +2 -2
  765. package/plugins/ragents.documents/server/files-route.ts +2 -3
  766. package/plugins/ragents.documents/server/index.ts +10 -11
  767. package/plugins/ragents.documents/server/show-document-tool.ts +2 -2
  768. package/plugins/ragents.documents/server/store.ts +3 -3
  769. package/plugins/ragents.documents/server/tool-contributor.ts +3 -3
  770. package/plugins/ragents.documents/web/DocumentViewer.tsx +5 -6
  771. package/plugins/ragents.documents/web/api.ts +1 -1
  772. package/plugins/ragents.documents/web/index.tsx +4 -4
  773. package/plugins/ragents.lsp-fsharp/provision.ts +2 -2
  774. package/plugins/ragents.lsp-fsharp/ragents-plugin.json +3 -0
  775. package/plugins/ragents.lsp-fsharp/server/index.ts +3 -3
  776. package/plugins/ragents.lsp-fsharp/web/index.tsx +1 -1
  777. package/plugins/ragents.lsp-roslyn/provision.ts +2 -2
  778. package/plugins/ragents.lsp-roslyn/ragents-plugin.json +3 -0
  779. package/plugins/ragents.lsp-roslyn/server/index.ts +47 -8
  780. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +145 -0
  781. package/plugins/ragents.lsp-roslyn/web/index.tsx +1 -1
  782. package/plugins/ragents.lsp-typescript/ragents-plugin.json +3 -0
  783. package/plugins/ragents.lsp-typescript/server/index.ts +3 -3
  784. package/plugins/ragents.lsp-typescript/web/index.tsx +1 -1
  785. package/plugins/ragents.model-relay/ragents-plugin.json +3 -0
  786. package/plugins/ragents.model-relay/server/config.ts +5 -31
  787. package/plugins/ragents.model-relay/server/index.ts +5 -6
  788. package/plugins/ragents.model-relay/server/relay.ts +8 -9
  789. package/plugins/ragents.orchestration/contract.ts +13 -14
  790. package/plugins/ragents.orchestration/orchestration.hbs +4 -3
  791. package/plugins/ragents.orchestration/ragents-plugin.json +6 -0
  792. package/plugins/ragents.orchestration/server/index.ts +13 -16
  793. package/plugins/ragents.orchestration/server/run-stop-tool.ts +4 -4
  794. package/plugins/ragents.orchestration/server/{canvas-tool.ts → surface-tool.ts} +42 -43
  795. package/plugins/ragents.orchestration/surface.hbs +34 -0
  796. package/plugins/ragents.orchestration/tiled-layout.ts +16 -16
  797. package/plugins/ragents.orchestration/web/ActorChat.tsx +16 -14
  798. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +23 -26
  799. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +5 -6
  800. package/plugins/ragents.orchestration/web/ActorPopout.tsx +7 -5
  801. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +16 -16
  802. package/plugins/ragents.orchestration/web/{ActorCanvasControls.tsx → ActorSurfaceControls.tsx} +23 -28
  803. package/plugins/ragents.orchestration/web/ActorTile.tsx +2 -2
  804. package/plugins/ragents.orchestration/web/Center.tsx +47 -55
  805. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +4 -4
  806. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +7 -7
  807. package/plugins/ragents.orchestration/web/FlowInspector.tsx +24 -42
  808. package/plugins/ragents.orchestration/web/JournalStatus.tsx +8 -8
  809. package/plugins/ragents.orchestration/web/MaterialBody.tsx +5 -5
  810. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  811. package/plugins/ragents.orchestration/web/SurfaceStartup.tsx +8 -0
  812. package/plugins/ragents.orchestration/web/{CanvasTiles.tsx → SurfaceTiles.tsx} +18 -18
  813. package/plugins/ragents.orchestration/web/{TiledCanvas.tsx → TiledSurface.tsx} +22 -22
  814. package/plugins/ragents.orchestration/web/actor-header-settings.ts +2 -2
  815. package/plugins/ragents.orchestration/web/api.ts +4 -10
  816. package/plugins/ragents.orchestration/web/constants.ts +0 -1
  817. package/plugins/ragents.orchestration/web/executions.ts +3 -3
  818. package/plugins/ragents.orchestration/web/index.tsx +19 -124
  819. package/plugins/ragents.orchestration/web/program-slot.ts +14 -0
  820. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +95 -0
  821. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +109 -0
  822. package/plugins/ragents.orchestration/web/{column/RunColumn.tsx → run-panel/RunPanel.tsx} +211 -83
  823. package/plugins/ragents.orchestration/web/{column/ColumnSettings.tsx → run-panel/RunPanelSettings.tsx} +13 -13
  824. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +165 -0
  825. package/plugins/ragents.orchestration/web/{column/column-actors.ts → run-panel/run-panel-actors.ts} +14 -13
  826. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +47 -0
  827. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +30 -0
  828. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +71 -0
  829. package/plugins/ragents.orchestration/web/{column → run-panel}/sheet-status.ts +4 -4
  830. package/plugins/ragents.orchestration/web/{canvas-stage.ts → surface-entities.ts} +2 -2
  831. package/plugins/ragents.orchestration/web/{canvas-startup.ts → surface-startup.ts} +7 -10
  832. package/plugins/ragents.orchestration/web/surface-view-settings.ts +42 -0
  833. package/plugins/ragents.orchestration/web/tile-docking.ts +14 -14
  834. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +26 -26
  835. package/plugins/ragents.overseer/contract.ts +20 -14
  836. package/plugins/ragents.overseer/ragents-plugin.json +3 -0
  837. package/plugins/ragents.overseer/server/api.ts +34 -23
  838. package/plugins/ragents.overseer/server/coordinator-prompt.ts +3 -3
  839. package/plugins/ragents.overseer/server/coordinator.ts +19 -0
  840. package/plugins/ragents.overseer/server/index.ts +39 -27
  841. package/plugins/ragents.overseer/server/orientation.ts +4 -5
  842. package/plugins/ragents.overseer/server/quick-answer.ts +5 -4
  843. package/plugins/ragents.overseer/server/reset-method.ts +4 -3
  844. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  845. package/plugins/ragents.overseer/server/settings-method.ts +1 -1
  846. package/plugins/ragents.overseer/server/settings.ts +6 -6
  847. package/plugins/ragents.overseer/server/user-location.ts +20 -19
  848. package/plugins/ragents.overseer/web/ModelSettings.tsx +4 -4
  849. package/plugins/ragents.overseer/web/chat-display.ts +1 -1
  850. package/plugins/ragents.overseer/web/index.tsx +51 -26
  851. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  852. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  853. package/plugins/ragents.processes/contract.ts +5 -5
  854. package/plugins/ragents.processes/ragents-plugin.json +3 -0
  855. package/plugins/ragents.processes/server/index.ts +13 -19
  856. package/plugins/ragents.processes/server/methods.ts +18 -20
  857. package/plugins/ragents.processes/server/observer.ts +64 -104
  858. package/plugins/ragents.processes/server/run-processes.ts +24 -0
  859. package/plugins/ragents.processes/web/ProcessHeader.tsx +13 -16
  860. package/plugins/ragents.processes/web/index.tsx +2 -1
  861. package/plugins/ragents.processes/web/processes.ts +1 -1
  862. package/plugins/ragents.product/ragents-plugin.json +3 -0
  863. package/plugins/ragents.product/server/config.ts +12 -13
  864. package/plugins/ragents.product/server/index.ts +15 -16
  865. package/plugins/ragents.product/server/runtime.ts +2 -2
  866. package/plugins/ragents.product/web/index.tsx +3 -3
  867. package/plugins/ragents.profile-distribution/contract.ts +6 -9
  868. package/plugins/ragents.profile-distribution/ragents-plugin.json +3 -0
  869. package/plugins/ragents.profile-distribution/server/archive.ts +26 -51
  870. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  871. package/plugins/ragents.profile-distribution/server/index.ts +9 -16
  872. package/plugins/ragents.reference/examples.ts +1 -1
  873. package/plugins/ragents.reference/ragents-plugin.json +3 -0
  874. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +2 -2
  875. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +1 -1
  876. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -1
  877. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +4 -4
  878. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +1 -1
  879. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +1 -1
  880. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  881. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +2 -2
  882. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +1 -1
  883. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -1
  884. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/state.ts +2 -2
  885. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +11 -11
  886. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +15 -15
  887. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +3 -8
  888. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +1 -1
  889. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  890. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +2 -2
  891. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +6 -6
  892. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +3 -3
  893. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  894. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +1 -1
  895. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  896. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +1 -2
  897. package/plugins/ragents.reference/run-scripts/word-game/src/state.ts +6 -6
  898. package/plugins/ragents.reference/run-scripts/word-game/src/view.tsx +14 -14
  899. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +4 -5
  900. package/plugins/ragents.reference/server/index.ts +2 -2
  901. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +1 -1
  902. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +1 -1
  903. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +1 -1
  904. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  905. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +2 -2
  906. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +2 -2
  907. package/plugins/ragents.reference/walkthroughs.ts +19 -19
  908. package/plugins/ragents.reference/web/StartGuides.tsx +2 -2
  909. package/plugins/ragents.reference/web/index.tsx +1 -1
  910. package/plugins/ragents.todo/ragents-plugin.json +3 -0
  911. package/plugins/ragents.todo/server/index.ts +2 -2
  912. package/plugins/ragents.todo/server/todo-tool.ts +4 -5
  913. package/plugins/ragents.todo/server/tool-contributor.ts +2 -2
  914. package/plugins/ragents.todo/web/TodoSection.tsx +3 -3
  915. package/plugins/ragents.todo/web/index.ts +1 -1
  916. package/plugins/ragents.transcript/ragents-plugin.json +3 -0
  917. package/plugins/ragents.transcript/server/index.ts +4 -4
  918. package/plugins/ragents.transcript/server/transcript.ts +2 -3
  919. package/plugins/ragents.watch/ragents-plugin.json +6 -0
  920. package/plugins/ragents.watch/server/condition.ts +2 -2
  921. package/plugins/ragents.watch/server/contract.ts +1 -1
  922. package/plugins/ragents.watch/server/functions.ts +3 -3
  923. package/plugins/ragents.watch/server/index.ts +3 -3
  924. package/plugins/ragents.watch/server/observation.ts +6 -6
  925. package/plugins/ragents.watch/server/service.ts +5 -5
  926. package/plugins/ragents.workspace/client/workspace-client.ts +129 -58
  927. package/plugins/ragents.workspace/contract.ts +98 -35
  928. package/plugins/ragents.workspace/prompt.hbs +1 -8
  929. package/plugins/ragents.workspace/ragents-plugin.json +3 -0
  930. package/plugins/ragents.workspace/server/binding.ts +122 -39
  931. package/plugins/ragents.workspace/server/browse-route.ts +96 -103
  932. package/plugins/ragents.workspace/server/clients.ts +236 -68
  933. package/plugins/ragents.workspace/server/config.ts +30 -0
  934. package/plugins/ragents.workspace/server/index.ts +61 -26
  935. package/plugins/ragents.workspace/server/runtime.ts +271 -46
  936. package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/shell-platform.ts +3 -5
  937. package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/workspace-tool-naming.ts +7 -1
  938. package/plugins/ragents.workspace/web/FileBrowser.tsx +11 -8
  939. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +115 -61
  940. package/plugins/ragents.workspace/web/api.ts +1 -1
  941. package/plugins/ragents.workspace/web/index.tsx +1 -1
  942. package/ragents.config.core.ts +2 -7
  943. package/ragents.config.showcase.ts +2 -5
  944. package/scripts/agent/agent-cli.ts +265 -107
  945. package/scripts/agent/journal.ts +3 -1
  946. package/scripts/agent/turn-control.ts +19 -0
  947. package/scripts/package/build-package.ts +68 -13
  948. package/scripts/package/ragents.mjs +4 -2
  949. package/scripts/plugin/build-builtin-plugins.ts +52 -0
  950. package/scripts/plugin/plugin-cli.ts +99 -0
  951. package/scripts/provision/run-provision.ts +20 -18
  952. package/scripts/remote/connect.ts +75 -53
  953. package/scripts/remote/start.ts +2 -3
  954. package/scripts/workspace-client/run-workspace-client.ts +15 -9
  955. package/apps/server/agent-home/settings.json +0 -3
  956. package/apps/server/src/chat-attachments.ts +0 -52
  957. package/apps/server/src/chat-events.ts +0 -185
  958. package/apps/server/src/plugin-support/asset-path.ts +0 -4
  959. package/apps/server/src/profile/plugin-list.ts +0 -19
  960. package/apps/server/src/web-build.ts +0 -82
  961. package/apps/web/column.html +0 -12
  962. package/apps/web/index.html +0 -12
  963. package/apps/web/src/StartSurface.tsx +0 -161
  964. package/apps/web/src/chat/ChatInputToolbar.tsx +0 -488
  965. package/apps/web/src/chat/ChatMessages.tsx +0 -666
  966. package/apps/web/src/chat/ChatPanel.tsx +0 -61
  967. package/apps/web/src/chat/DetailModeSwitch.tsx +0 -58
  968. package/apps/web/src/chat/Markdown.tsx +0 -104
  969. package/apps/web/src/chat/StepPopover.tsx +0 -82
  970. package/apps/web/src/chat/WorkingScenes.tsx +0 -235
  971. package/apps/web/src/chat/attachments.ts +0 -53
  972. package/apps/web/src/chat/chat-scroll.ts +0 -41
  973. package/apps/web/src/chat/texts.ts +0 -61
  974. package/apps/web/src/chat/types.ts +0 -26
  975. package/apps/web/src/column/ColumnApp.tsx +0 -234
  976. package/apps/web/src/column/column-location.ts +0 -30
  977. package/apps/web/src/column/host-contract.ts +0 -93
  978. package/apps/web/src/panel/OverviewPage.tsx +0 -215
  979. package/apps/web/src/panel/SettingsPage.tsx +0 -98
  980. package/apps/web/src/panel/target-state.ts +0 -78
  981. package/apps/web/src/plugin-discovery.ts +0 -5
  982. package/apps/web/src/virtual-plugins.d.ts +0 -3
  983. package/apps/web/vite.config.ts +0 -140
  984. package/packages/agent/src/config.ts +0 -161
  985. package/packages/agent/src/core/auth-storage.ts +0 -271
  986. package/packages/agent/src/core/bash-executor.ts +0 -156
  987. package/packages/agent/src/core/compaction/branch-summarization.ts +0 -372
  988. package/packages/agent/src/core/diagnostics.ts +0 -15
  989. package/packages/agent/src/core/event-bus.ts +0 -33
  990. package/packages/agent/src/core/exec.ts +0 -107
  991. package/packages/agent/src/core/experimental.ts +0 -3
  992. package/packages/agent/src/core/footer-data-provider.ts +0 -388
  993. package/packages/agent/src/core/http-dispatcher.ts +0 -106
  994. package/packages/agent/src/core/index.ts +0 -78
  995. package/packages/agent/src/core/model-config.ts +0 -287
  996. package/packages/agent/src/core/model-registry.ts +0 -126
  997. package/packages/agent/src/core/model-resolver.ts +0 -675
  998. package/packages/agent/src/core/output-guard.ts +0 -108
  999. package/packages/agent/src/core/package-manager.ts +0 -2441
  1000. package/packages/agent/src/core/prompt-templates.ts +0 -284
  1001. package/packages/agent/src/core/resolve-config-value.ts +0 -287
  1002. package/packages/agent/src/core/runtime-credentials.ts +0 -48
  1003. package/packages/agent/src/core/session-cwd.ts +0 -59
  1004. package/packages/agent/src/core/settings-manager.ts +0 -1212
  1005. package/packages/agent/src/core/slash-commands.ts +0 -41
  1006. package/packages/agent/src/core/timings.ts +0 -50
  1007. package/packages/agent/src/core/tools/tool-definition-wrapper.ts +0 -45
  1008. package/packages/agent/src/core/trust-manager.ts +0 -244
  1009. package/packages/agent/src/utils/ansi.ts +0 -60
  1010. package/packages/agent/src/utils/fs-watch.ts +0 -30
  1011. package/packages/agent/src/utils/git.ts +0 -226
  1012. package/packages/agent/src/utils/json.ts +0 -6
  1013. package/packages/agent/src/utils/tools-manager.ts +0 -63
  1014. package/packages/agent-core/package.json +0 -32
  1015. package/packages/ai/src/api/openrouter-images.lazy.ts +0 -10
  1016. package/packages/ai/src/api/openrouter-images.ts +0 -98
  1017. package/packages/ai/src/auth/credential-store.ts +0 -51
  1018. package/packages/ai/src/compat/extension-oauth-types.ts +0 -45
  1019. package/packages/ai/src/image-models.generated.ts +0 -533
  1020. package/packages/ai/src/images-models.ts +0 -274
  1021. package/packages/ai/src/models-store.ts +0 -38
  1022. package/packages/ai/src/oauth.ts +0 -10
  1023. package/packages/ai/src/providers/openrouter-images.ts +0 -14
  1024. package/packages/ai/src/session-resources.ts +0 -24
  1025. package/packages/ai/src/utils/abort-signals.ts +0 -41
  1026. package/packages/ai/src/utils/deferred-tools.ts +0 -39
  1027. package/packages/ai/src/utils/hash.ts +0 -13
  1028. package/packages/ai/src/utils/node-http-proxy.ts +0 -112
  1029. package/plugins/ragents.actor-programs/server/client-runtime.ts +0 -16
  1030. package/plugins/ragents.ask/web/constants.ts +0 -1
  1031. package/plugins/ragents.lsp-roslyn/web/api.ts +0 -10
  1032. package/plugins/ragents.orchestration/web/CanvasStartup.tsx +0 -14
  1033. package/plugins/ragents.orchestration/web/canvas-view-settings.ts +0 -42
  1034. package/plugins/ragents.orchestration/web/column/AddresseeControl.tsx +0 -116
  1035. package/plugins/ragents.orchestration/web/column/column-settings.ts +0 -47
  1036. package/plugins/ragents.orchestration/web/column/column-state.ts +0 -68
  1037. package/plugins/ragents.orchestration/web/contract.ts +0 -25
  1038. package/plugins/ragents.product/model-settings-contract.ts +0 -10
  1039. package/plugins/ragents.profile-distribution/server/web.ts +0 -24
  1040. /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/authoring-contracts.ts +0 -0
  1041. /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/runtime-libraries.ts +0 -0
  1042. /package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/prompt-reader.ts +0 -0
  1043. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-contracts.d.ts +0 -0
  1044. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram-contracts.d.ts +0 -0
  1045. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram.css +0 -0
  1046. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/form-contracts.d.ts +0 -0
  1047. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/frame-layout.ts +0 -0
  1048. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/table-contracts.d.ts +0 -0
  1049. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/viewer-contracts.d.ts +0 -0
  1050. /package/{plugins/ragents.orchestration/canvas.hbs → bundles/ragents.orchestration/surface.hbs} +0 -0
  1051. /package/packages/{agent-core/src → agent/src/loop}/index.ts +0 -0
  1052. /package/packages/{agent-core/src → agent/src/loop}/uuid.ts +0 -0
@@ -1,28 +1,28 @@
1
- import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, type PointerEvent, type ReactNode, type RefObject } from "react";
1
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent, type PointerEvent, type ReactNode, type RefObject } from "react";
2
2
  import { createPortal } from "react-dom";
3
3
  import { ArrowUpRightIcon, LayoutGridIcon, Maximize2Icon, MessageSquareIcon, PanelBottomIcon, PanelRightIcon } from "lucide-react";
4
- import { useAccess } from "@aicontainer/web/AccessContext";
5
- import { ChatPanel } from "@aicontainer/web/chat/ChatPanel";
6
- import { runIsWorking } from "@aicontainer/web/chat/chat-target";
7
- import { useCenterElements, useColumnHost } from "@aicontainer/web/column/host";
8
- import type { CanvasCenterContext, CanvasElementContribution, CanvasElementDefinition, CardSectionContribution, SessionContext, SessionNavigation } from "@aicontainer/web/PluginRegistry";
9
- import { Button, cn, Spinner } from "@aicontainer/web/ui";
10
- import { useOptionalActorPrograms } from "@aicontainer/plugins/ragents.actor-programs/web/context";
11
- import { pendingConfirmationFor } from "@aicontainer/plugins/ragents.actor-programs/web/AppsPanel";
4
+ import { useAccess } from "@ragents/web/AccessContext";
5
+ import { ChatPanel } from "quassel";
6
+ import { runIsWorking } from "@ragents/web/chat/chat-target";
7
+ import { useCenterElements, useRunPanelHost } from "@ragents/web/run-panel/host";
8
+ import type { SurfaceCenterContext, SurfaceElementContribution, SurfaceElementDefinition, CardSectionContribution, SessionContext, SessionNavigation } from "@ragents/web/PluginRegistry";
9
+ import { Button, cn, Spinner, StartupNotice } from "@ragents/web/ui";
12
10
  import { ActorChat } from "../ActorChat";
13
11
  import { ActorChatControls } from "../ActorChatControls";
14
12
  import { useActorHeaderMode } from "../actor-header-settings";
15
- import { actorVisibleOnCanvas, saveCanvasViewPreferences, useCanvasViewPreferences } from "../canvas-view-settings";
13
+ import { surfaceStartupState, type SurfaceStartupState } from "../surface-startup";
14
+ import { actorVisibleOnSurface, saveSurfaceViewPreferences, useSurfaceViewPreferences } from "../surface-view-settings";
16
15
  import { cardSectionsClass } from "../constants";
17
16
  import type { FlowSelection } from "../FlowInspector";
18
- import { runViewFrom, type RunActor, type RunView } from "../run-view";
17
+ import { useProgramSlot } from "../program-slot";
18
+ import { chatPrimaryId, runViewFrom, type RunActor, type RunView } from "@ragents/web/run-view";
19
19
  import { AddresseeControl } from "./AddresseeControl";
20
- import { columnActors, elementNeedsAttention, partitionColumnActors } from "./column-actors";
21
- import { useColumnSettings } from "./column-settings";
22
- import { chatLayoutFor, clampChatWidth, saveColumnState, useColumnState, type ChatLayout, type ColumnChatMode, type ColumnState } from "./column-state";
20
+ import { runPanelActors, elementNeedsAttention, partitionRunPanelActors } from "./run-panel-actors";
21
+ import { useRunPanelSettings } from "./run-panel-settings";
22
+ import { chatShowsContent, useRunPanelStartup } from "./run-panel-startup";
23
+ import { chatLayoutFor, clampChatWidth, saveRunPanelState, useRunPanelState, type ChatLayout, type RunPanelChatMode, type RunPanelState } from "./run-panel-state";
23
24
  import { sheetStatus } from "./sheet-status";
24
25
 
25
- const SHEET_HEIGHT = "90%";
26
26
  const SHEET_BLUR_DELAY = 220;
27
27
 
28
28
  const chipRowClass = "flex flex-none flex-wrap items-center gap-1.5 border-b border-border bg-shell px-2 py-1.5";
@@ -30,31 +30,31 @@ const chipClass = "flex h-7 max-w-[200px] flex-none cursor-pointer items-center
30
30
  const chatLayoutClass: Readonly<Record<ChatLayout, string>> = {
31
31
  full: "relative flex min-h-0 min-w-0 flex-1 flex-col",
32
32
  side: "relative flex min-h-0 min-w-0 flex-col",
33
- floating: "absolute inset-x-2.5 bottom-0 z-20 flex flex-col overflow-hidden rounded-t-2xl border border-b-0 border-transparent bg-transparent transition-[height,box-shadow,background-color,border-color] duration-300 ease-[cubic-bezier(.32,.72,0,1)] data-expanded:border-border data-expanded:bg-card data-expanded:shadow-[0_-16px_60px_#00000080] motion-reduce:transition-none",
33
+ floating: "absolute inset-x-2.5 bottom-0 z-20 flex flex-col overflow-hidden rounded-t-2xl border border-b-0 border-border bg-card shadow-[0_-16px_60px_#00000080] transition-[height] duration-300 ease-[cubic-bezier(.32,.72,0,1)] motion-reduce:transition-none",
34
34
  };
35
35
  const chatSurfaceClass = "rounded-none border-0 bg-transparent";
36
36
  const chatModeButtonClass = "aria-pressed:bg-accent aria-pressed:text-primary";
37
- const chatModes: readonly { Icon: typeof MessageSquareIcon; label: string; mode: ColumnChatMode; title: string }[] = [
38
- { Icon: MessageSquareIcon, label: "Nur Chat", mode: "chat", title: "Nur Chat: der Chat füllt die Spalte, die Mini-App tritt zurück" },
37
+ const chatModes: readonly { Icon: typeof MessageSquareIcon; label: string; mode: RunPanelChatMode; title: string }[] = [
38
+ { Icon: MessageSquareIcon, label: "Nur Chat", mode: "chat", title: "Nur Chat: der Chat füllt das Run-Panel, die Mini-App tritt zurück" },
39
39
  { Icon: PanelBottomIcon, label: "Chat unten", mode: "bottom", title: "Chat unten: das Sheet über der Mini-App" },
40
40
  { Icon: PanelRightIcon, label: "Chat rechts", mode: "side", title: "Chat rechts: neben der Mini-App" },
41
41
  ];
42
42
 
43
- interface ColumnElement {
44
- Element: CanvasElementContribution["Element"];
45
- definition: CanvasElementDefinition;
43
+ interface RunPanelElement {
44
+ Element: SurfaceElementContribution["Element"];
45
+ definition: SurfaceElementDefinition;
46
46
  }
47
47
 
48
- export function OrchestrationColumn(props: CanvasCenterContext) {
49
- return <RunColumn key={props.session.session.id} {...props} />;
48
+ export function OrchestrationRunPanel(props: SurfaceCenterContext) {
49
+ return <RunPanel key={props.session.session.id} {...props} />;
50
50
  }
51
51
 
52
- function RunColumn({ canvasElements, cardSections, navigation, renderChat, session, toolbarContainer }: CanvasCenterContext) {
52
+ function RunPanel({ surfaceElements, cardSections, navigation, renderChat, session, toolbarContainer }: SurfaceCenterContext) {
53
53
  const runId = session.session.id;
54
54
  const inspect = useAccess().can("runs.inspect");
55
- const host = useColumnHost();
55
+ const host = useRunPanelHost();
56
56
  const view = runViewFrom(session.runView);
57
- const stored = useColumnState(runId);
57
+ const stored = useRunPanelState(runId);
58
58
  const centered = useCenterElements(runId);
59
59
  const rootRef = useRef<HTMLDivElement>(null);
60
60
  const sheetRef = useRef<HTMLElement>(null);
@@ -63,7 +63,7 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
63
63
  const [chatWidth, setChatWidth] = useState(stored.chatWidth);
64
64
  const [width, setWidth] = useState(0);
65
65
  const [addresseeOpen, setAddresseeOpen] = useState(false);
66
- const settings = useColumnSettings();
66
+ const settings = useRunPanelSettings();
67
67
  useEffect(() => setChatWidth(stored.chatWidth), [stored.chatWidth]);
68
68
  useEffect(() => {
69
69
  const root = rootRef.current;
@@ -72,27 +72,33 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
72
72
  observer.observe(root);
73
73
  return () => observer.disconnect();
74
74
  }, []);
75
- const save = useCallback((patch: Partial<ColumnState>) => saveColumnState(runId, { ...stored, ...patch }), [runId, stored]);
76
- const elements = useMemo<ColumnElement[]>(() => canvasElements.flatMap(({ Element, select }) => select(session)
75
+ const save = useCallback((patch: Partial<RunPanelState>) => saveRunPanelState(runId, { ...stored, ...patch }), [runId, stored]);
76
+ const elements = useMemo<RunPanelElement[]>(() => surfaceElements.flatMap(({ Element, select }) => select(session)
77
77
  .filter((definition) => definition.visible !== false)
78
- .map((definition) => ({ Element, definition }))), [canvasElements, session]);
78
+ .map((definition) => ({ Element, definition }))), [surfaceElements, session]);
79
79
  const selectedElement = elements.find((entry) => entry.definition.id === stored.element) ?? elements[0];
80
- const actors = useMemo(() => view ? columnActors(view, inspect) : [], [inspect, view]);
80
+ const startup = useRunPanelStartup(
81
+ surfaceStartupState({ view, startup: session.startup, connected: session.connected, running: session.running, error: session.conversationError }),
82
+ session.connected,
83
+ elements.length > 0 || chatShowsContent(session.messages),
84
+ );
85
+ const notice = startup ? <RunPanelStartup state={startup} /> : undefined;
86
+ const actors = useMemo(() => view ? runPanelActors(view, inspect) : [], [inspect, view]);
81
87
  const mode = useActorHeaderMode(runId);
82
- const preferences = useCanvasViewPreferences(runId);
88
+ const preferences = useSurfaceViewPreferences(runId);
83
89
  const appActorIds = useMemo(() => new Set(elements.flatMap(({ definition }) => definition.anchorActorId ? [definition.anchorActorId] : [])), [elements]);
84
- const primaryId = view?.primaryActorId;
90
+ const primaryId = view ? chatPrimaryId(view) : undefined;
85
91
  const selectedActor = actors.find((actor) => actor.id === stored.actor) ?? actors.find((actor) => actor.id === primaryId) ?? actors[0];
86
- const { shown, hidden } = useMemo(() => partitionColumnActors(actors, {
92
+ const { shown, hidden } = useMemo(() => partitionRunPanelActors(actors, {
87
93
  mode,
88
94
  primaryId,
89
95
  selectedId: selectedActor?.id,
90
- onStage: (actor) => actor.id === primaryId || actorVisibleOnCanvas(actor, appActorIds, preferences, primaryId),
96
+ onStage: (actor) => actor.id === primaryId || actorVisibleOnSurface(actor, appActorIds, preferences, primaryId),
91
97
  }), [actors, appActorIds, mode, preferences, primaryId, selectedActor?.id]);
92
98
  const availableWidth = () => rootRef.current?.clientWidth ?? Number.POSITIVE_INFINITY;
93
99
  const selectActor = useCallback((actor: RunActor) => save({ actor: actor.id }), [save]);
94
100
  const revealActor = useCallback((actor: RunActor) => {
95
- saveCanvasViewPreferences(runId, { ...preferences, actorVisibility: { ...preferences.actorVisibility, [actor.id]: true } });
101
+ saveSurfaceViewPreferences(runId, { ...preferences, actorVisibility: { ...preferences.actorVisibility, [actor.id]: true } });
96
102
  save({ actor: actor.id });
97
103
  }, [preferences, runId, save]);
98
104
  const navigate = useCallback((selection: FlowSelection) => {
@@ -102,8 +108,11 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
102
108
  const primarySelected = selectedActor === undefined || selectedActor.id === primaryId;
103
109
  const narrow = width < settings.sideWidth;
104
110
  const layout = chatLayoutFor({ chat: stored.chat, hasElement: selectedElement !== undefined, narrow });
105
- const sheet = useSheet(layout === "floating", sheetRef, addresseeOpen, settings.openDelay);
106
- const peek = useSheetPeek(layout === "floating", sheetRef, grabRef, statusRef, selectedActor?.id);
111
+ const sheet = useSheet(layout === "floating", sheetRef, grabRef, addresseeOpen, settings.openDelay);
112
+ const geometry = useSheetPeek(layout === "floating", sheetRef, grabRef, statusRef, selectedActor?.id);
113
+ const expandedHeight = Math.max(geometry.minimum, Math.min(stored.sheetExpandedHeight ?? geometry.maximum, geometry.maximum));
114
+ const resize = useSheetResize(layout === "floating", sheetRef, grabRef, sheet, geometry, expandedHeight,
115
+ (height) => save({ sheetExpandedHeight: Math.round(height) }));
107
116
  const scrollerRef = useRef<HTMLDivElement | null>(null);
108
117
  useEffect(() => {
109
118
  if (layout !== "floating" || !sheet.expanded) return;
@@ -139,10 +148,10 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
139
148
  sideWidth={settings.sideWidth}
140
149
  />, toolbarContainer);
141
150
  const chat = primarySelected || !view || !selectedActor
142
- ? renderChat({ chatElementClassName: chatSurfaceClass, chatScrollerRef: (element) => { scrollerRef.current = element; }, toolbarLeft: addressee })
143
- : <ActorColumnChat actor={selectedActor} cardSections={cardSections} navigation={navigation} onNavigate={navigate} session={session} toolbarLeft={addressee} view={view} />;
151
+ ? renderChat({ chatElementClassName: chatSurfaceClass, chatScrollerRef: (element) => { scrollerRef.current = element; }, notice, toolbarLeft: addressee })
152
+ : <ActorRunPanelChat actor={selectedActor} cardSections={cardSections} navigation={navigation} notice={notice} onNavigate={navigate} session={session} toolbarLeft={addressee} view={view} />;
144
153
 
145
- return <div className="flex min-h-0 min-w-0 flex-1 flex-col" data-column="run" ref={rootRef}>
154
+ return <div className="flex min-h-0 min-w-0 flex-1 flex-col bg-app" data-run-panel="run" ref={rootRef}>
146
155
  {chatModeSwitch}
147
156
  {layout !== "full" && elements.length > 1 && <nav aria-label="Mini-Apps des Runs" className={chipRowClass}>
148
157
  {elements.map(({ definition }) => <ElementChip
@@ -158,7 +167,7 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
158
167
  />)}
159
168
  </nav>}
160
169
  <div className={cn("relative min-h-0 min-w-0 flex-1", layout === "side" ? "grid" : "flex flex-col")} data-chat-layout={layout} style={layout === "side" ? { gridTemplateColumns: `minmax(0,1fr) auto ${chatWidth}px` } : undefined}>
161
- {layout !== "full" && selectedElement && <ColumnStage centered={centered.has(selectedElement.definition.id)} element={selectedElement} navigation={navigation} peek={layout === "floating" ? peek : 0} runId={runId} session={session} />}
170
+ {layout !== "full" && selectedElement && <RunPanelStage centered={centered.has(selectedElement.definition.id)} element={selectedElement} navigation={navigation} peek={layout === "floating" ? geometry.minimum : 0} runId={runId} session={session} />}
162
171
  {layout === "side" && <Sash
163
172
  onChange={(next) => setChatWidth(clampChatWidth(next, availableWidth()))}
164
173
  onCommit={(next) => save({ chatWidth: clampChatWidth(next, availableWidth()) })}
@@ -166,33 +175,46 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
166
175
  />}
167
176
  {layout === "floating" && <div
168
177
  aria-hidden
169
- className="absolute inset-0 z-[15] bg-black/25 opacity-0 transition-opacity duration-300 pointer-events-none data-expanded:pointer-events-auto data-expanded:opacity-100 motion-reduce:transition-none dark:bg-black/45"
178
+ className="absolute inset-0 z-[15] bg-backdrop opacity-0 transition-opacity duration-300 pointer-events-none data-expanded:pointer-events-auto data-expanded:opacity-100 motion-reduce:transition-none"
170
179
  data-expanded={sheet.expanded || undefined}
171
180
  onClick={sheet.close}
172
181
  />}
173
182
  <section
174
183
  aria-label="Chat"
175
- className={chatLayoutClass[layout]}
184
+ className={cn(chatLayoutClass[layout], layout === "floating" && "[&:not([data-expanded])_[data-slot=card-sections]]:hidden [&[data-sheet-resizing]_[data-slot=card-sections]]:hidden")}
176
185
  data-expanded={layout === "floating" && sheet.expanded ? true : undefined}
186
+ data-sheet-resizing={resize.height !== undefined || undefined}
177
187
  data-view={primarySelected ? "chat" : "actor-chat"}
178
188
  onBlurCapture={layout === "floating" ? () => sheet.closeLater(SHEET_BLUR_DELAY) : undefined}
179
- onFocusCapture={layout === "floating" ? sheet.open : undefined}
189
+ onFocusCapture={layout === "floating" ? (event) => { if (event.target !== grabRef.current) sheet.open(); } : undefined}
180
190
  onPointerEnter={layout === "floating" ? (event) => { if (event.pointerType === "mouse") sheet.openLater(); } : undefined}
181
191
  onPointerLeave={layout === "floating" ? () => sheet.closeLater(settings.closeDelay) : undefined}
182
192
  ref={sheetRef}
183
- style={layout === "floating" ? { height: sheet.expanded ? SHEET_HEIGHT : peek } : undefined}
193
+ style={layout === "floating" ? { height: resize.height ?? (sheet.expanded ? expandedHeight : geometry.minimum), transition: resize.height !== undefined ? "none" : undefined } : undefined}
184
194
  >
185
195
  {layout === "floating" && <button
186
196
  aria-expanded={sheet.expanded}
187
- aria-label={sheet.expanded ? "Chat absenken" : "Chat hochschieben"}
188
- className="flex h-[18px] w-full flex-none cursor-pointer items-center justify-center [&:hover>span]:bg-foreground focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:-outline-offset-2"
189
- onClick={sheet.toggle}
197
+ aria-label="Höhe des ausgeklappten Chats"
198
+ aria-orientation="horizontal"
199
+ aria-valuemin={geometry.minimum}
200
+ aria-valuemax={geometry.maximum}
201
+ aria-valuenow={Math.round(resize.height ?? expandedHeight)}
202
+ className="flex h-3 w-full flex-none cursor-row-resize touch-none items-center justify-center outline-none select-none [&:hover>span]:bg-foreground [&:focus-visible>span]:bg-foreground [&:focus-visible>span]:ring-2 [&:focus-visible>span]:ring-ring/60"
203
+ data-run-panel="sheet-grip"
204
+ onClick={resize.onClick}
205
+ onKeyDown={resize.onKeyDown}
206
+ onPointerDown={resize.onPointerDown}
207
+ onPointerMove={resize.onPointerMove}
208
+ onPointerUp={resize.onPointerUp}
209
+ onPointerCancel={resize.onPointerCancel}
210
+ onLostPointerCapture={resize.onPointerCancel}
190
211
  ref={grabRef}
191
- title={sheet.expanded ? "Chat absenken" : "Chat hochschieben"}
212
+ role="separator"
213
+ title={`Ziehen: ausgeklappte Höhe einstellen. Klicken: ${sheet.expanded ? "Chat absenken" : "Chat hochschieben"}.`}
192
214
  type="button"
193
215
  ><span aria-hidden className="h-1 w-9 rounded-full bg-border-strong transition-colors" /></button>}
194
216
  {status && <button
195
- className={cn("flex h-6 w-full flex-none cursor-pointer items-center gap-2 px-4 text-left text-[0.7rem] transition-opacity duration-200 in-data-expanded:pointer-events-none in-data-expanded:opacity-0 motion-reduce:transition-none", status.kind === "question" ? "text-warning" : "text-muted-foreground")}
217
+ className={cn("flex h-6 w-full flex-none cursor-pointer items-center gap-2 px-[var(--qsl-chat-horizontal-padding,24px)] text-left text-[0.7rem] transition-opacity duration-200 in-data-expanded:pointer-events-none in-data-expanded:opacity-0 motion-reduce:transition-none", status.kind === "waiting" ? "text-warning" : "text-muted-foreground")}
196
218
  onClick={sheet.toggle}
197
219
  ref={statusRef}
198
220
  title={status.text}
@@ -207,14 +229,14 @@ function RunColumn({ canvasElements, cardSections, navigation, renderChat, sessi
207
229
  </div>;
208
230
  }
209
231
 
210
- /** Die drei Ansichten der Spalte in der Kopfzeile; "Chat rechts" bleibt gesperrt, solange die Spalte zu schmal ist. */
232
+ /** Die drei Ansichten des Run-Panels in der Kopfzeile; "Chat rechts" bleibt gesperrt, solange das Run-Panel zu schmal ist. */
211
233
  function ChatModeSwitch({ narrow, onChange, selected, sideWidth }: {
212
234
  narrow: boolean;
213
- onChange: (mode: ColumnChatMode) => void;
214
- selected: ColumnChatMode;
235
+ onChange: (mode: RunPanelChatMode) => void;
236
+ selected: RunPanelChatMode;
215
237
  sideWidth: number;
216
238
  }) {
217
- return <div aria-label="Ansicht der Spalte" className="flex flex-none items-center gap-0.5 self-center rounded-lg border border-border bg-card p-0.5" role="group">
239
+ return <div aria-label="Ansicht des Run-Panels" className="flex flex-none items-center gap-0.5 self-center rounded-lg border border-border bg-card p-0.5" role="group">
218
240
  {chatModes.map(({ Icon, label, mode, title }) => {
219
241
  const blocked = mode === "side" && narrow;
220
242
  return <Button
@@ -233,22 +255,29 @@ function ChatModeSwitch({ narrow, onChange, selected, sideWidth }: {
233
255
  }
234
256
 
235
257
  /** Das Sheet: Maus, Fokus oder der Griff schieben es hoch; Escape, die Bühne oder der Griff senken es. Ein offenes Pop-out hält es oben. */
236
- function useSheet(active: boolean, sheetRef: RefObject<HTMLElement | null>, blocked: boolean, openDelay: number) {
258
+ function useSheet(active: boolean, sheetRef: RefObject<HTMLElement | null>, grabRef: RefObject<HTMLButtonElement | null>, blocked: boolean, openDelay: number) {
237
259
  const [expanded, setExpanded] = useState(false);
238
260
  const [held, setHeld] = useState(false);
239
261
  const guard = useRef({ held, blocked });
262
+ const resizing = useRef(false);
240
263
  const timer = useRef<number>(undefined);
241
264
  useEffect(() => { guard.current = { held, blocked }; }, [blocked, held]);
242
265
  const cancel = useCallback(() => window.clearTimeout(timer.current), []);
243
- const open = useCallback(() => { cancel(); setExpanded(true); }, [cancel]);
244
- const openLater = useCallback(() => { cancel(); timer.current = window.setTimeout(() => setExpanded(true), openDelay); }, [cancel, openDelay]);
266
+ const open = useCallback(() => { if (!resizing.current) { cancel(); setExpanded(true); } }, [cancel]);
267
+ const openLater = useCallback(() => {
268
+ if (resizing.current) return;
269
+ cancel();
270
+ timer.current = window.setTimeout(() => { if (!resizing.current) setExpanded(true); }, openDelay);
271
+ }, [cancel, openDelay]);
245
272
  const closeLater = useCallback((delay: number) => {
273
+ if (resizing.current) return;
246
274
  cancel();
247
275
  timer.current = window.setTimeout(() => {
248
- if (guard.current.held || guard.current.blocked || sheetRef.current?.contains(document.activeElement)) return;
276
+ if (resizing.current || guard.current.held || guard.current.blocked
277
+ || (document.activeElement !== grabRef.current && sheetRef.current?.contains(document.activeElement))) return;
249
278
  setExpanded(false);
250
279
  }, delay);
251
- }, [cancel, sheetRef]);
280
+ }, [cancel, grabRef, sheetRef]);
252
281
  const close = useCallback(() => {
253
282
  cancel();
254
283
  setHeld(false);
@@ -260,48 +289,139 @@ function useSheet(active: boolean, sheetRef: RefObject<HTMLElement | null>, bloc
260
289
  setHeld(true);
261
290
  open();
262
291
  }, [close, expanded, open]);
292
+ const pauseResize = useCallback(() => { cancel(); resizing.current = true; }, [cancel]);
293
+ const finishResize = useCallback((previous?: { expanded: boolean; held: boolean }) => {
294
+ cancel();
295
+ resizing.current = false;
296
+ setExpanded(previous?.expanded ?? false);
297
+ setHeld(previous?.held ?? false);
298
+ }, [cancel]);
263
299
  useEffect(() => { if (!active) close(); }, [active, close]);
264
300
  useEffect(() => cancel, [cancel]);
265
301
  useEffect(() => {
266
302
  if (!active || !expanded) return;
267
- const onKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape" && !guard.current.blocked) close(); };
303
+ const onKeyDown = (event: globalThis.KeyboardEvent) => { if (event.key === "Escape" && !resizing.current && !guard.current.blocked) close(); };
268
304
  window.addEventListener("keydown", onKeyDown);
269
305
  return () => window.removeEventListener("keydown", onKeyDown);
270
306
  }, [active, close, expanded]);
271
- return { expanded, open, openLater, closeLater, close, toggle };
307
+ return { expanded, held, open, openLater, closeLater, close, toggle, pauseResize, finishResize };
272
308
  }
273
309
 
274
310
  /** Die Höhe des zugeschobenen Sheets: Griff, Statuszeile und Eingabe, gemessen an der Eingabe des Chat-Rahmens. */
275
311
  function useSheetPeek(active: boolean, sheetRef: RefObject<HTMLElement | null>, grabRef: RefObject<HTMLButtonElement | null>, statusRef: RefObject<HTMLButtonElement | null>, actorId: string | undefined) {
276
- const [peek, setPeek] = useState(0);
312
+ const [geometry, setGeometry] = useState({ minimum: 0, maximum: 0, scale: 1 });
277
313
  useLayoutEffect(() => {
278
314
  if (!active) return;
315
+ const sheet = sheetRef.current;
279
316
  const grab = grabRef.current;
280
317
  const status = statusRef.current;
281
- const composer = sheetRef.current?.querySelector<HTMLElement>('[data-chat="composer"]');
282
- if (!grab || !status || !composer) throw new Error("Das Sheet des Panels findet Griff, Statuszeile oder Eingabe nicht.");
283
- const measure = () => setPeek(grab.offsetHeight + status.offsetHeight + composer.offsetHeight);
318
+ const composer = sheet?.querySelector<HTMLElement>('[data-chat="composer"]');
319
+ const container = sheet?.parentElement;
320
+ if (!sheet || !grab || !composer || !container) throw new Error("Das Sheet des Panels findet Griff, Eingabe oder Rahmen nicht.");
321
+ const measure = () => {
322
+ const style = getComputedStyle(sheet);
323
+ const width = sheet.getBoundingClientRect().width;
324
+ if (width === 0) return;
325
+ const scale = width / Number.parseFloat(style.width);
326
+ const minimum = Math.ceil((grab.getBoundingClientRect().height + (status?.getBoundingClientRect().height ?? 0)
327
+ + composer.getBoundingClientRect().height) / scale + Number.parseFloat(style.borderTopWidth) + Number.parseFloat(style.borderBottomWidth));
328
+ const maximum = Math.max(minimum, Math.floor(container.getBoundingClientRect().height / scale * 0.9));
329
+ setGeometry((previous) => previous.minimum === minimum && previous.maximum === maximum && previous.scale === scale ? previous : { minimum, maximum, scale });
330
+ };
284
331
  const observer = new ResizeObserver(measure);
285
332
  observer.observe(composer);
333
+ observer.observe(grab);
334
+ observer.observe(container);
335
+ if (status) observer.observe(status);
286
336
  measure();
287
337
  return () => observer.disconnect();
288
338
  }, [active, actorId, grabRef, sheetRef, statusRef]);
289
- return peek;
339
+ return geometry;
340
+ }
341
+
342
+ function useSheetResize(active: boolean, sheetRef: RefObject<HTMLElement | null>, grabRef: RefObject<HTMLButtonElement | null>, sheet: ReturnType<typeof useSheet>,
343
+ geometry: { minimum: number; maximum: number; scale: number }, expandedHeight: number, onCommit: (height: number) => void) {
344
+ const [height, setHeight] = useState<number>();
345
+ const drag = useRef<{ pointerId: number; startY: number; startHeight: number; height: number; moved: boolean; expanded: boolean; held: boolean }>(undefined);
346
+ const suppressClick = useRef(false);
347
+ const finish = (commit: boolean) => {
348
+ const previous = drag.current;
349
+ if (!previous) return;
350
+ drag.current = undefined;
351
+ suppressClick.current = previous.moved || !commit;
352
+ const grip = grabRef.current;
353
+ if (grip?.hasPointerCapture(previous.pointerId)) grip.releasePointerCapture(previous.pointerId);
354
+ if (commit && previous.moved) onCommit(previous.height);
355
+ sheet.finishResize(commit && previous.moved ? { expanded: true, held: previous.held } : previous);
356
+ setHeight(undefined);
357
+ };
358
+ const finishResize = sheet.finishResize;
359
+ useEffect(() => {
360
+ if (active) return;
361
+ drag.current = undefined;
362
+ setHeight(undefined);
363
+ finishResize();
364
+ }, [active, finishResize]);
365
+ const clamp = (value: number) => Math.max(geometry.minimum, Math.min(value, geometry.maximum));
366
+ return {
367
+ height,
368
+ onClick: (event: MouseEvent<HTMLButtonElement>) => {
369
+ const suppressed = suppressClick.current && event.detail > 0;
370
+ suppressClick.current = false;
371
+ if (suppressed) return;
372
+ sheet.toggle();
373
+ },
374
+ onPointerDown: (event: PointerEvent<HTMLButtonElement>) => {
375
+ if (event.button !== 0 || drag.current || !sheetRef.current) return;
376
+ event.preventDefault();
377
+ const startHeight = sheetRef.current.getBoundingClientRect().height / geometry.scale;
378
+ drag.current = { pointerId: event.pointerId, startY: event.clientY, startHeight, height: startHeight, moved: false, expanded: sheet.expanded, held: sheet.held };
379
+ suppressClick.current = false;
380
+ sheet.pauseResize();
381
+ setHeight(startHeight);
382
+ event.currentTarget.setPointerCapture(event.pointerId);
383
+ event.currentTarget.focus({ preventScroll: true });
384
+ },
385
+ onPointerMove: (event: PointerEvent<HTMLButtonElement>) => {
386
+ const current = drag.current;
387
+ if (!current || current.pointerId !== event.pointerId) return;
388
+ const distance = (current.startY - event.clientY) / geometry.scale;
389
+ if (!current.moved && Math.abs(distance) < 3) return;
390
+ current.moved = true;
391
+ current.height = clamp(current.startHeight + distance);
392
+ setHeight(current.height);
393
+ },
394
+ onPointerUp: (event: PointerEvent<HTMLButtonElement>) => { if (drag.current?.pointerId === event.pointerId) finish(true); },
395
+ onPointerCancel: (event: PointerEvent<HTMLButtonElement>) => { if (drag.current?.pointerId === event.pointerId) finish(false); },
396
+ onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => {
397
+ if (event.key === "Escape" && drag.current) {
398
+ event.preventDefault();
399
+ event.stopPropagation();
400
+ finish(false);
401
+ return;
402
+ }
403
+ const next = event.key === "ArrowUp" ? expandedHeight + 24 : event.key === "ArrowDown" ? expandedHeight - 24
404
+ : event.key === "Home" ? geometry.minimum : event.key === "End" ? geometry.maximum : undefined;
405
+ if (next === undefined || drag.current) return;
406
+ event.preventDefault();
407
+ sheet.finishResize({ expanded: true, held: sheet.held });
408
+ onCommit(clamp(next));
409
+ },
410
+ };
290
411
  }
291
412
 
292
413
  function ElementChip({ centered, definition, onSelect, selected, session, view }: {
293
414
  centered: boolean;
294
- definition: CanvasElementDefinition;
415
+ definition: SurfaceElementDefinition;
295
416
  onSelect: () => void;
296
417
  selected: boolean;
297
418
  session: SessionContext;
298
419
  view: RunView | undefined;
299
420
  }) {
300
- const programs = useOptionalActorPrograms();
301
- const app = programs?.listing?.apps.find((candidate) => candidate.id === definition.id);
421
+ const programs = useProgramSlot();
302
422
  const title = definition.title ?? definition.id;
303
- const attention = elementNeedsAttention(view, definition, app !== undefined && pendingConfirmationFor(session, app) !== undefined);
304
- return <button aria-pressed={selected && !centered} className={chipClass} data-surface="app" onClick={onSelect} title={centered ? `${title} liegt in der Mitte. Klick holt das Fenster nach vorn.` : `Mini-App ${title} anzeigen`} type="button">
423
+ const attention = elementNeedsAttention(view, definition, programs?.needsAnswer(session, definition.id) ?? false);
424
+ return <button aria-pressed={selected && !centered} className={chipClass} data-tone="app" onClick={onSelect} title={centered ? `${title} liegt in der Mitte. Klick holt das Fenster nach vorn.` : `Mini-App ${title} anzeigen`} type="button">
305
425
  <span className="grid size-5 flex-none place-items-center rounded-full bg-glass-app text-foreground [&>svg]:size-3"><LayoutGridIcon /></span>
306
426
  <span className="truncate">{title}</span>
307
427
  {attention && <span aria-label="Antwort erwartet" className="grid size-4 flex-none place-items-center rounded-full bg-warning text-[0.62rem] font-bold text-background" role="img">!</span>}
@@ -309,29 +429,29 @@ function ElementChip({ centered, definition, onSelect, selected, session, view }
309
429
  </button>;
310
430
  }
311
431
 
312
- function ColumnStage({ centered, element, navigation, peek, runId, session }: {
432
+ function RunPanelStage({ centered, element, navigation, peek, runId, session }: {
313
433
  centered: boolean;
314
- element: ColumnElement;
434
+ element: RunPanelElement;
315
435
  navigation: SessionNavigation;
316
436
  peek: number;
317
437
  runId: string;
318
438
  session: SessionContext;
319
439
  }) {
320
- const host = useColumnHost();
321
- const programs = useOptionalActorPrograms();
440
+ const host = useRunPanelHost();
441
+ const programs = useProgramSlot();
322
442
  const { Element, definition } = element;
323
443
  const title = definition.title ?? definition.id;
324
- return <section aria-label={`Mini-App ${title}`} className="group/stage relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-card/55" style={peek > 0 ? { paddingBottom: peek } : undefined}>
444
+ return <section aria-label={`Mini-App ${title}`} className="group/stage relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-app" style={peek > 0 ? { paddingBottom: peek } : undefined}>
325
445
  <div className="absolute top-1.5 right-2 z-[5] flex gap-0.5 rounded-lg border border-border bg-card p-0.5 opacity-0 transition-opacity group-hover/stage:opacity-100 group-focus-within/stage:opacity-100 motion-reduce:transition-none">
326
446
  {host.kind === "vscode"
327
447
  ? <Button aria-label={`${title} in die Mitte legen`} onClick={() => host.openInCenter(runId, definition.id, title)} size="icon-sm" title="In die Mitte legen" variant="ghost"><ArrowUpRightIcon /></Button>
328
448
  : programs && <Button aria-label={`${title} in Vollansicht öffnen`} onClick={() => programs.openFullscreen(definition.id)} size="icon-sm" title="Vollansicht" variant="ghost"><Maximize2Icon /></Button>}
329
449
  </div>
330
- <div className="relative flex min-h-0 flex-1 flex-col" data-column="stage">
450
+ <div className="relative flex min-h-0 flex-1 flex-col" data-run-panel="stage">
331
451
  {centered
332
452
  ? <div className="m-auto grid gap-3 p-4 text-center text-[0.76rem] text-muted-foreground" role="status">
333
453
  <span>{title} liegt in der Mitte.</span>
334
- <Button onClick={() => host.returnToColumn(runId, definition.id)} size="sm" variant="outline">Zurück ins Panel</Button>
454
+ <Button onClick={() => host.returnToRunPanel(runId, definition.id)} size="sm" variant="outline">Zurück ins Panel</Button>
335
455
  </div>
336
456
  : <Element definition={definition} navigation={navigation} session={session} />}
337
457
  </div>
@@ -373,10 +493,11 @@ function Sash({ onChange, onCommit, value }: { onChange: (next: number) => void;
373
493
  </div>;
374
494
  }
375
495
 
376
- function ActorColumnChat({ actor, cardSections, navigation, onNavigate, session, toolbarLeft, view }: {
496
+ function ActorRunPanelChat({ actor, cardSections, navigation, notice, onNavigate, session, toolbarLeft, view }: {
377
497
  actor: RunActor;
378
498
  cardSections: readonly CardSectionContribution[];
379
499
  navigation: SessionNavigation;
500
+ notice: ReactNode;
380
501
  onNavigate: (selection: FlowSelection) => void;
381
502
  session: SessionContext;
382
503
  toolbarLeft: ReactNode;
@@ -387,9 +508,16 @@ function ActorColumnChat({ actor, cardSections, navigation, onNavigate, session,
387
508
  <div className={`${cardSectionsClass} max-h-[40%] flex-none overflow-auto overscroll-contain border-t-0 border-b`} data-slot="card-sections">
388
509
  {cardSections.map(({ id, Section }) => <Section actor={actor} key={id} navigation={navigation} session={session} />)}
389
510
  </div>
390
- <ChatPanel className="flex-1" composer={<ActorChatControls actor={actor} presentation="column" running={running} surface="column" toolbarLeft={toolbarLeft} view={view} />}>
391
- <ActorChat actor={actor} conversation={session.actorConversations?.[actor.id]} historyError={session.conversationError} onNavigate={onNavigate}
392
- presentation="inspector" primaryMessages={session.messages} running={running} surface="column" view={view} />
511
+ <ChatPanel className="flex-1" composer={<ActorChatControls actor={actor} presentation="panel" running={running} display="panel" toolbarLeft={toolbarLeft} view={view} />}>
512
+ {notice ?? <ActorChat actor={actor} conversation={session.actorConversations?.[actor.id]} historyError={session.conversationError} onNavigate={onNavigate}
513
+ presentation="inspector" primaryMessages={session.messages} running={running} display="panel" view={view} />}
393
514
  </ChatPanel>
394
515
  </div>;
395
516
  }
517
+
518
+ /** Der Ladezustand mittig im Chat; er rückt nur hoch, wo er sonst unter die Eingabe geriete. */
519
+ function RunPanelStartup({ state }: { state: SurfaceStartupState }) {
520
+ return <div className="grid min-h-0 flex-1 grid-rows-[minmax(0,1fr)_auto_minmax(var(--qsl-composer-height,0px),1fr)] justify-items-center overflow-hidden p-6">
521
+ <StartupNotice className="row-start-2" state={state} />
522
+ </div>;
523
+ }
@@ -1,33 +1,33 @@
1
1
  import { useEffect, useState } from "react";
2
- import { useAccess } from "@aicontainer/web/AccessContext";
3
- import { Button, Input } from "@aicontainer/web/ui";
4
- import { COLUMN_SETTINGS_LIMITS, DEFAULT_COLUMN_SETTINGS, saveColumnSettings, useColumnSettings, type ColumnSettings as ColumnSettingsValue } from "./column-settings";
2
+ import { useAccess } from "@ragents/web/AccessContext";
3
+ import { Button, Input } from "@ragents/web/ui";
4
+ import { RUN_PANEL_SETTINGS_LIMITS, DEFAULT_RUN_PANEL_SETTINGS, saveRunPanelSettings, useRunPanelSettings, type RunPanelSettings as RunPanelSettingsValue } from "./run-panel-settings";
5
5
 
6
- type Draft = Record<keyof ColumnSettingsValue, string>;
6
+ type Draft = Record<keyof RunPanelSettingsValue, string>;
7
7
 
8
- const toDraft = (value: ColumnSettingsValue): Draft => ({ sideWidth: String(value.sideWidth), openDelay: String(value.openDelay), closeDelay: String(value.closeDelay) });
8
+ const toDraft = (value: RunPanelSettingsValue): Draft => ({ sideWidth: String(value.sideWidth), openDelay: String(value.openDelay), closeDelay: String(value.closeDelay) });
9
9
 
10
- const fields: readonly { key: keyof ColumnSettingsValue; label: string; unit: string }[] = [
10
+ const fields: readonly { key: keyof RunPanelSettingsValue; label: string; unit: string }[] = [
11
11
  { key: "sideWidth", label: "Chat neben der Mini-App ab", unit: "px" },
12
12
  { key: "openDelay", label: "Hochschieben nach", unit: "ms" },
13
13
  { key: "closeDelay", label: "Zurück nach Verlassen nach", unit: "ms" },
14
14
  ];
15
15
 
16
- export function ColumnSettings() {
16
+ export function RunPanelSettings() {
17
17
  const access = useAccess();
18
- const stored = useColumnSettings();
18
+ const stored = useRunPanelSettings();
19
19
  const [draft, setDraft] = useState(() => toDraft(stored));
20
20
  const [message, setMessage] = useState<string>();
21
21
  const [error, setError] = useState<string>();
22
22
  useEffect(() => { setDraft(toDraft(stored)); }, [stored]);
23
23
  const writable = access.can("settings.write");
24
- const save = (next: ColumnSettingsValue) => {
24
+ const save = (next: RunPanelSettingsValue) => {
25
25
  if (!writable) return;
26
26
  setError(undefined);
27
27
  setMessage(undefined);
28
28
  try {
29
- saveColumnSettings(next);
30
- setMessage("Einstellungen der Arbeitsspalte gespeichert.");
29
+ saveRunPanelSettings(next);
30
+ setMessage("Einstellungen des Run-Panels gespeichert.");
31
31
  } catch (cause) {
32
32
  setError(cause instanceof Error ? cause.message : String(cause));
33
33
  }
@@ -40,10 +40,10 @@ export function ColumnSettings() {
40
40
  <div className="flex flex-wrap items-end gap-3">
41
41
  {fields.map(({ key, label, unit }) => <label className="grid gap-1.5" key={key}>
42
42
  <span>{label} ({unit})</span>
43
- <Input className="w-[130px]" disabled={!writable} max={COLUMN_SETTINGS_LIMITS[key].max} min={COLUMN_SETTINGS_LIMITS[key].min} onChange={(event) => { setDraft({ ...draft, [key]: event.target.value }); setMessage(undefined); }} required step="1" type="number" value={draft[key]} />
43
+ <Input className="w-[130px]" disabled={!writable} max={RUN_PANEL_SETTINGS_LIMITS[key].max} min={RUN_PANEL_SETTINGS_LIMITS[key].min} onChange={(event) => { setDraft({ ...draft, [key]: event.target.value }); setMessage(undefined); }} required step="1" type="number" value={draft[key]} />
44
44
  </label>)}
45
45
  <Button disabled={!writable} type="submit">Speichern</Button>
46
- <Button disabled={!writable} onClick={() => save(DEFAULT_COLUMN_SETTINGS)} variant="outline">Zurücksetzen</Button>
46
+ <Button disabled={!writable} onClick={() => save(DEFAULT_RUN_PANEL_SETTINGS)} variant="outline">Zurücksetzen</Button>
47
47
  </div>
48
48
  {error ? <p className="text-muted-foreground" role="alert">{error}</p> : message && <p className="text-muted-foreground" role="status">{message}</p>}
49
49
  </form>;