@schlenkr/ragents 0.1.5 → 0.1.7

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 (1049) 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 +16 -7
  13. package/apps/server/src/config-file.ts +25 -6
  14. package/apps/server/src/config.ts +10 -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 +1257 -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 +0 -15
  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 +12 -8
  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 +212 -106
  75. package/apps/server/src/ragents/actor-chat-history.ts +24 -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 +68 -43
  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 +33 -15
  84. package/apps/server/src/ragents/product-runtime.ts +1 -1
  85. package/apps/server/src/ragents/run-owner.ts +18 -0
  86. package/apps/server/src/ragents/runtime-bridge.ts +1 -1
  87. package/apps/server/src/ragents/session.ts +184 -85
  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 +18 -29
  97. package/apps/server/src/run-transfer.ts +66 -5
  98. package/apps/server/src/server.ts +112 -33
  99. package/apps/server/src/settings.ts +9 -12
  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-CFhTJEmH.js +1 -0
  107. package/apps/web/dist/assets/main-DlzW4t4c.js +6 -0
  108. package/apps/web/dist/assets/mermaid-HWGCJPDP-BPn4aV2r.css +1 -0
  109. package/apps/web/dist/assets/mermaid-HWGCJPDP-kxkB991i.js +478 -0
  110. package/apps/web/dist/assets/runPanel-BJEFQ__w.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 +430 -0
  114. package/apps/web/dist/help/guide-clients.md +346 -0
  115. package/apps/web/dist/help/guide-distributed.html +325 -0
  116. package/apps/web/dist/help/guide-distributed.md +230 -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 +344 -0
  128. package/apps/web/dist/help/guide-runtime.md +232 -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 +7076 -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/SessionList.tsx +16 -8
  161. package/apps/web/src/SettingsModal.tsx +37 -37
  162. package/apps/web/src/StartOptions.tsx +81 -26
  163. package/apps/web/src/StartSelection.tsx +111 -0
  164. package/apps/web/src/StartTiles.tsx +73 -0
  165. package/apps/web/src/{CanvasShortcuts.tsx → SurfaceShortcuts.tsx} +2 -2
  166. package/apps/web/src/ThemeSettings.tsx +1 -1
  167. package/apps/web/src/WorkspacePanel.tsx +4 -4
  168. package/apps/web/src/access-session.ts +4 -1
  169. package/{plugins/ragents.orchestration/web → apps/web/src}/actor-conversation.ts +3 -3
  170. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/DataTable.tsx +9 -9
  171. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FilePicker.tsx +4 -4
  172. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagram.tsx +16 -14
  173. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagramRenderer.tsx +3 -3
  174. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Form.tsx +12 -12
  175. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Layout.tsx +1 -1
  176. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/MessageList.tsx +5 -5
  177. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Viewers.tsx +8 -7
  178. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/WorkflowDiagram.tsx +1 -1
  179. package/apps/web/src/actor-programs/client-ui/chat-contracts.d.ts +64 -0
  180. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/contracts.d.ts +2 -2
  181. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-selection.ts +5 -5
  182. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/index.tsx +22 -16
  183. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/layout-contracts.d.ts +1 -1
  184. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/message-list-contracts.d.ts +2 -2
  185. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/workflow-diagram-contracts.d.ts +1 -1
  186. package/apps/web/src/api.ts +45 -22
  187. package/apps/web/src/chat/QuasselHost.tsx +12 -0
  188. package/apps/web/src/chat/StoppedActorNotice.tsx +39 -0
  189. package/apps/web/src/chat/chat-target.ts +14 -5
  190. package/apps/web/src/chat/requests.ts +13 -5
  191. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  192. package/apps/web/src/chat/useChat.ts +8 -7
  193. package/apps/web/src/chat/user-location.ts +1 -1
  194. package/apps/web/src/chat-view-settings.tsx +49 -0
  195. package/apps/web/src/host-modules.ts +90 -0
  196. package/apps/web/src/language-server/api.ts +24 -0
  197. package/{plugins/ragents.lsp-roslyn/web → apps/web/src/language-server}/language-server-plugin.tsx +133 -6
  198. package/apps/web/src/main.tsx +4 -2
  199. package/apps/web/src/offered-machines.ts +11 -0
  200. package/apps/web/src/panel/ConnectionsPage.tsx +117 -0
  201. package/apps/web/src/panel/LoginForm.tsx +9 -9
  202. package/apps/web/src/panel/PanelDialogs.tsx +44 -27
  203. package/apps/web/src/panel/PanelHeader.tsx +11 -0
  204. package/apps/web/src/panel/PanelPage.tsx +8 -5
  205. package/apps/web/src/panel/RunLine.tsx +50 -0
  206. package/apps/web/src/panel/RunsPage.tsx +84 -0
  207. package/apps/web/src/panel/StartPage.tsx +163 -0
  208. package/apps/web/src/panel/connection-state.ts +40 -0
  209. package/apps/web/src/panel/contract.ts +66 -21
  210. package/apps/web/src/panel/page-props.ts +6 -0
  211. package/apps/web/src/plugin-bootstrap.ts +60 -31
  212. package/{plugins/ragents.product/web → apps/web/src/product}/ModelControl.tsx +3 -3
  213. package/{plugins/ragents.product/web → apps/web/src/product}/ProductModelSettings.tsx +7 -7
  214. package/{plugins/ragents.product/web → apps/web/src/product}/SystemPromptControl.tsx +3 -3
  215. package/{plugins/ragents.product/web → apps/web/src/product}/model-settings.ts +3 -3
  216. package/{plugins/ragents.product/web → apps/web/src/product}/start-options.tsx +2 -2
  217. package/apps/web/src/rpc/client.ts +28 -6
  218. package/apps/web/src/run-panel/RunPanelApp.tsx +334 -0
  219. package/apps/web/src/{column/ColumnRunHeader.tsx → run-panel/RunPanelHeader.tsx} +2 -2
  220. package/apps/web/src/{column/ColumnMenu.tsx → run-panel/RunPanelMenu.tsx} +4 -4
  221. package/apps/web/src/run-panel/RunPanelRail.tsx +38 -0
  222. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +55 -0
  223. package/apps/web/src/{column → run-panel}/clipboard.ts +21 -10
  224. package/apps/web/src/run-panel/host-contract.ts +123 -0
  225. package/apps/web/src/{column → run-panel}/host.ts +31 -23
  226. package/apps/web/src/run-panel/input-bridge.ts +75 -0
  227. package/apps/web/src/run-panel/keyboard.ts +53 -0
  228. package/apps/web/src/run-panel/run-panel-location.ts +35 -0
  229. package/apps/web/src/{column → run-panel}/use-session-list.ts +3 -3
  230. package/apps/web/src/run-panel/workspace-state.ts +43 -0
  231. package/apps/web/src/{column.tsx → run-panel.tsx} +20 -13
  232. package/apps/web/src/run-preparation.ts +1 -1
  233. package/{plugins/ragents.orchestration/web → apps/web/src}/run-view.ts +25 -7
  234. package/apps/web/src/settings-contributions.ts +16 -18
  235. package/apps/web/src/title-model-settings.ts +1 -1
  236. package/apps/web/src/toolLine.ts +1 -1
  237. package/apps/web/src/ui/ListDetail.tsx +1 -1
  238. package/apps/web/src/ui/dialog.tsx +5 -5
  239. package/apps/web/src/ui/frame.css +1 -0
  240. package/apps/web/src/ui/index.ts +5 -0
  241. package/apps/web/src/ui/popover.tsx +2 -2
  242. package/apps/web/src/ui/quassel.css +41 -0
  243. package/apps/web/src/ui/relative-time.ts +36 -0
  244. package/apps/web/src/ui/startup-notice.tsx +22 -0
  245. package/apps/web/src/ui/state-icon.tsx +60 -0
  246. package/apps/web/src/ui/state-vocabulary.ts +31 -0
  247. package/apps/web/src/ui/stop-button.tsx +22 -0
  248. package/apps/web/src/ui/tailwind.css +2 -3
  249. package/apps/web/src/ui/theme.css +19 -19
  250. package/apps/web/tsconfig.json +4 -5
  251. package/apps/web/tsconfig.plugin.json +44 -0
  252. package/bundles/ragents.activity/ragents-bundle.json +38 -0
  253. package/bundles/ragents.activity/server/index.js +14 -0
  254. package/bundles/ragents.activity/server/index.js.map +7 -0
  255. package/bundles/ragents.activity/web/classes.json +1 -0
  256. package/bundles/ragents.activity/web/index.js +2 -0
  257. package/bundles/ragents.activity/web/index.js.map +7 -0
  258. package/bundles/ragents.actor-programs/prompt.hbs +80 -0
  259. package/bundles/ragents.actor-programs/ragents-bundle.json +214 -0
  260. package/bundles/ragents.actor-programs/server/index.js +2071 -0
  261. package/bundles/ragents.actor-programs/server/index.js.map +7 -0
  262. package/bundles/ragents.actor-programs/summary.hbs +17 -0
  263. package/bundles/ragents.actor-programs/web/classes.json +1 -0
  264. package/bundles/ragents.actor-programs/web/index.js +27 -0
  265. package/bundles/ragents.actor-programs/web/index.js.map +7 -0
  266. package/bundles/ragents.ask/ask.hbs +4 -0
  267. package/bundles/ragents.ask/ragents-bundle.json +97 -0
  268. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js +13 -0
  269. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +7 -0
  270. package/bundles/ragents.ask/server/exports/server/contract.js +11 -0
  271. package/bundles/ragents.ask/server/exports/server/contract.js.map +7 -0
  272. package/bundles/ragents.ask/server/index.js +279 -0
  273. package/bundles/ragents.ask/server/index.js.map +7 -0
  274. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +2 -0
  275. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +7 -0
  276. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +2 -0
  277. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +7 -0
  278. package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js +25 -0
  279. package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map +7 -0
  280. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +2 -0
  281. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +7 -0
  282. package/bundles/ragents.ask/web/classes.json +1 -0
  283. package/bundles/ragents.ask/web/exports/ask-payload.js +2 -0
  284. package/bundles/ragents.ask/web/exports/ask-payload.js.map +7 -0
  285. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +2 -0
  286. package/bundles/ragents.ask/web/exports/web/QuestionCard.js.map +7 -0
  287. package/bundles/ragents.ask/web/exports/web/api.js +2 -0
  288. package/bundles/ragents.ask/web/exports/web/api.js.map +7 -0
  289. package/bundles/ragents.ask/web/index.js +2 -0
  290. package/bundles/ragents.ask/web/index.js.map +7 -0
  291. package/bundles/ragents.browser/ragents-bundle.json +53 -0
  292. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js +11 -0
  293. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +7 -0
  294. package/bundles/ragents.browser/server/exports/server/contract.js +9 -0
  295. package/bundles/ragents.browser/server/exports/server/contract.js.map +7 -0
  296. package/bundles/ragents.browser/server/index.js +479 -0
  297. package/bundles/ragents.browser/server/index.js.map +7 -0
  298. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +38 -0
  299. package/bundles/ragents.documents/prompt.hbs +18 -0
  300. package/bundles/ragents.documents/ragents-bundle.json +120 -0
  301. package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js +37 -0
  302. package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js.map +7 -0
  303. package/bundles/ragents.documents/server/exports/contract.js +11 -0
  304. package/bundles/ragents.documents/server/exports/contract.js.map +7 -0
  305. package/bundles/ragents.documents/server/index.js +290 -0
  306. package/bundles/ragents.documents/server/index.js.map +7 -0
  307. package/bundles/ragents.documents/web/classes.json +1 -0
  308. package/bundles/ragents.documents/web/index.js +26 -0
  309. package/bundles/ragents.documents/web/index.js.map +7 -0
  310. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +49 -0
  311. package/bundles/ragents.lsp-fsharp/server/index.js +82 -0
  312. package/bundles/ragents.lsp-fsharp/server/index.js.map +7 -0
  313. package/bundles/ragents.lsp-fsharp/web/classes.json +1 -0
  314. package/bundles/ragents.lsp-fsharp/web/index.js +2 -0
  315. package/bundles/ragents.lsp-fsharp/web/index.js.map +7 -0
  316. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +61 -0
  317. package/bundles/ragents.lsp-roslyn/server/index.js +208 -0
  318. package/bundles/ragents.lsp-roslyn/server/index.js.map +7 -0
  319. package/bundles/ragents.lsp-roslyn/web/classes.json +1 -0
  320. package/bundles/ragents.lsp-roslyn/web/index.js +2 -0
  321. package/bundles/ragents.lsp-roslyn/web/index.js.map +7 -0
  322. package/bundles/ragents.lsp-typescript/ragents-bundle.json +36 -0
  323. package/bundles/ragents.lsp-typescript/server/index.js +13 -0
  324. package/bundles/ragents.lsp-typescript/server/index.js.map +7 -0
  325. package/bundles/ragents.lsp-typescript/web/classes.json +1 -0
  326. package/bundles/ragents.lsp-typescript/web/index.js +2 -0
  327. package/bundles/ragents.lsp-typescript/web/index.js.map +7 -0
  328. package/bundles/ragents.model-relay/ragents-bundle.json +33 -0
  329. package/bundles/ragents.model-relay/server/index.js +230 -0
  330. package/bundles/ragents.model-relay/server/index.js.map +7 -0
  331. package/bundles/ragents.orchestration/orchestration.hbs +106 -0
  332. package/bundles/ragents.orchestration/ragents-bundle.json +194 -0
  333. package/bundles/ragents.orchestration/server/index.js +277 -0
  334. package/bundles/ragents.orchestration/server/index.js.map +7 -0
  335. package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js +2 -0
  336. package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js.map +7 -0
  337. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +2 -0
  338. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js.map +7 -0
  339. package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js +2 -0
  340. package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js.map +7 -0
  341. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +2 -0
  342. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +7 -0
  343. package/bundles/ragents.orchestration/web/classes.json +1 -0
  344. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +2 -0
  345. package/bundles/ragents.orchestration/web/exports/web/program-slot.js.map +7 -0
  346. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +2 -0
  347. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +7 -0
  348. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +2 -0
  349. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +7 -0
  350. package/bundles/ragents.orchestration/web/index.js +51 -0
  351. package/bundles/ragents.orchestration/web/index.js.map +7 -0
  352. package/bundles/ragents.overseer/ragents-bundle.json +144 -0
  353. package/bundles/ragents.overseer/server/index.js +652 -0
  354. package/bundles/ragents.overseer/server/index.js.map +7 -0
  355. package/bundles/ragents.overseer/web/classes.json +1 -0
  356. package/bundles/ragents.overseer/web/index.js +25 -0
  357. package/bundles/ragents.overseer/web/index.js.map +7 -0
  358. package/bundles/ragents.processes/ragents-bundle.json +93 -0
  359. package/bundles/ragents.processes/server/index.js +204 -0
  360. package/bundles/ragents.processes/server/index.js.map +7 -0
  361. package/bundles/ragents.processes/web/classes.json +1 -0
  362. package/bundles/ragents.processes/web/index.js +4 -0
  363. package/bundles/ragents.processes/web/index.js.map +7 -0
  364. package/bundles/ragents.product/preamble.hbs +9 -0
  365. package/bundles/ragents.product/ragents-bundle.json +93 -0
  366. package/bundles/ragents.product/server/index.js +208 -0
  367. package/bundles/ragents.product/server/index.js.map +7 -0
  368. package/bundles/ragents.product/web/classes.json +1 -0
  369. package/bundles/ragents.product/web/index.js +2 -0
  370. package/bundles/ragents.product/web/index.js.map +7 -0
  371. package/bundles/ragents.profile-distribution/ragents-bundle.json +64 -0
  372. package/bundles/ragents.profile-distribution/server/index.js +241 -0
  373. package/bundles/ragents.profile-distribution/server/index.js.map +7 -0
  374. package/bundles/ragents.reference/ragents-bundle.json +39 -0
  375. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +27 -0
  376. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +10 -0
  377. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +80 -0
  378. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +82 -0
  379. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +154 -0
  380. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +9 -0
  381. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +32 -0
  382. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +59 -0
  383. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +13 -0
  384. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +9 -0
  385. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +81 -0
  386. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +26 -0
  387. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +34 -0
  388. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +24 -0
  389. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +10 -0
  390. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -0
  391. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +5 -0
  392. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -0
  393. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +27 -0
  394. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +137 -0
  395. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/state.ts +38 -0
  396. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +42 -0
  397. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +38 -0
  398. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +218 -0
  399. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +12 -0
  400. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +9 -0
  401. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +60 -0
  402. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +26 -0
  403. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +24 -0
  404. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +18 -0
  405. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +16 -0
  406. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +39 -0
  407. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +15 -0
  408. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/server.ts +14 -0
  409. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +13 -0
  410. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +9 -0
  411. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +65 -0
  412. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +26 -0
  413. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +42 -0
  414. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +25 -0
  415. package/bundles/ragents.reference/run-scripts/word-game/package.json +11 -0
  416. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +27 -0
  417. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +23 -0
  418. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +105 -0
  419. package/bundles/ragents.reference/run-scripts/word-game/src/state.ts +22 -0
  420. package/bundles/ragents.reference/run-scripts/word-game/src/view.tsx +54 -0
  421. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +252 -0
  422. package/bundles/ragents.reference/server/index.js +16 -0
  423. package/bundles/ragents.reference/server/index.js.map +7 -0
  424. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +12 -0
  425. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +12 -0
  426. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +12 -0
  427. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +12 -0
  428. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +12 -0
  429. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +12 -0
  430. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +12 -0
  431. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +12 -0
  432. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +12 -0
  433. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +12 -0
  434. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +12 -0
  435. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +12 -0
  436. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +12 -0
  437. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +12 -0
  438. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +12 -0
  439. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +12 -0
  440. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +12 -0
  441. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +12 -0
  442. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +12 -0
  443. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +12 -0
  444. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +12 -0
  445. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +12 -0
  446. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +12 -0
  447. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +12 -0
  448. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +12 -0
  449. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +33 -0
  450. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +33 -0
  451. package/bundles/ragents.reference/web/classes.json +1 -0
  452. package/bundles/ragents.reference/web/index.js +2 -0
  453. package/bundles/ragents.reference/web/index.js.map +7 -0
  454. package/bundles/ragents.todo/ragents-bundle.json +48 -0
  455. package/bundles/ragents.todo/server/index.js +108 -0
  456. package/bundles/ragents.todo/server/index.js.map +7 -0
  457. package/bundles/ragents.todo/web/classes.json +1 -0
  458. package/bundles/ragents.todo/web/index.js +2 -0
  459. package/bundles/ragents.todo/web/index.js.map +7 -0
  460. package/bundles/ragents.transcript/ragents-bundle.json +34 -0
  461. package/bundles/ragents.transcript/server/index.js +102 -0
  462. package/bundles/ragents.transcript/server/index.js.map +7 -0
  463. package/bundles/ragents.watch/ragents-bundle.json +39 -0
  464. package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js +11 -0
  465. package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js.map +7 -0
  466. package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js +10 -0
  467. package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js.map +7 -0
  468. package/bundles/ragents.watch/server/exports/contract.js +9 -0
  469. package/bundles/ragents.watch/server/exports/contract.js.map +7 -0
  470. package/bundles/ragents.watch/server/exports/server/contract.js +9 -0
  471. package/bundles/ragents.watch/server/exports/server/contract.js.map +7 -0
  472. package/bundles/ragents.watch/server/index.js +482 -0
  473. package/bundles/ragents.watch/server/index.js.map +7 -0
  474. package/bundles/ragents.workspace/prompt.hbs +7 -0
  475. package/bundles/ragents.workspace/ragents-bundle.json +148 -0
  476. package/bundles/ragents.workspace/server/index.js +1049 -0
  477. package/bundles/ragents.workspace/server/index.js.map +7 -0
  478. package/bundles/ragents.workspace/web/classes.json +1 -0
  479. package/bundles/ragents.workspace/web/index.js +39 -0
  480. package/bundles/ragents.workspace/web/index.js.map +7 -0
  481. package/package.json +4 -15
  482. package/packages/agent/dist/core/agent-settings.d.ts +27 -0
  483. package/packages/agent/dist/core/compaction/compaction.d.ts +82 -0
  484. package/packages/agent/dist/core/compaction/index.d.ts +6 -0
  485. package/packages/agent/dist/core/compaction/utils.d.ts +39 -0
  486. package/packages/agent/dist/core/context-log.d.ts +25 -0
  487. package/packages/agent/dist/core/messages.d.ts +30 -0
  488. package/packages/agent/dist/core/model-runtime.d.ts +32 -0
  489. package/packages/agent/dist/core/provider-composer.d.ts +25 -0
  490. package/packages/agent/dist/core/skills.d.ts +20 -0
  491. package/packages/agent/dist/core/tool-definition.d.ts +17 -0
  492. package/packages/agent/dist/core/tools/bash.d.ts +58 -0
  493. package/packages/agent/dist/core/tools/edit-diff.d.ts +98 -0
  494. package/packages/agent/dist/core/tools/edit.d.ts +41 -0
  495. package/packages/agent/dist/core/tools/file-mutation-queue.d.ts +6 -0
  496. package/packages/agent/dist/core/tools/index.d.ts +5 -0
  497. package/packages/agent/dist/core/tools/output-accumulator.d.ts +58 -0
  498. package/packages/agent/dist/core/tools/path-utils.d.ts +8 -0
  499. package/packages/agent/dist/core/tools/read.d.ts +33 -0
  500. package/packages/agent/dist/core/tools/truncate.d.ts +61 -0
  501. package/packages/agent/dist/core/tools/write.d.ts +23 -0
  502. package/packages/agent/dist/index.d.ts +12 -0
  503. package/packages/agent/dist/loop/agent-loop.d.ts +13 -0
  504. package/packages/agent/dist/loop/agent.d.ts +99 -0
  505. package/packages/agent/dist/loop/index.d.ts +5 -0
  506. package/packages/agent/dist/loop/types.d.ts +333 -0
  507. package/packages/agent/dist/loop/uuid.d.ts +2 -0
  508. package/packages/agent/dist/utils/child-process.d.ts +17 -0
  509. package/packages/agent/dist/utils/exif-orientation.d.ts +5 -0
  510. package/packages/agent/dist/utils/frontmatter.d.ts +8 -0
  511. package/packages/agent/dist/utils/image-convert.d.ts +2 -0
  512. package/packages/agent/dist/utils/image-process.d.ts +18 -0
  513. package/packages/agent/dist/utils/image-resize-core.d.ts +30 -0
  514. package/packages/agent/dist/utils/image-resize-worker.d.ts +2 -0
  515. package/packages/agent/dist/utils/image-resize.d.ts +16 -0
  516. package/packages/agent/dist/utils/mime.d.ts +3 -0
  517. package/packages/agent/dist/utils/paths.d.ts +15 -0
  518. package/packages/agent/dist/utils/photon.d.ts +21 -0
  519. package/packages/agent/dist/utils/shell.d.ts +17 -0
  520. package/packages/agent/dist/utils/sleep.d.ts +5 -0
  521. package/packages/agent/package.json +3 -32
  522. package/packages/agent/src/core/agent-settings.ts +20 -0
  523. package/packages/agent/src/core/compaction/compaction.ts +53 -208
  524. package/packages/agent/src/core/compaction/index.ts +0 -1
  525. package/packages/agent/src/core/compaction/utils.ts +2 -2
  526. package/packages/agent/src/core/context-log.ts +49 -0
  527. package/packages/agent/src/core/messages.ts +9 -119
  528. package/packages/agent/src/core/model-runtime.ts +109 -467
  529. package/packages/agent/src/core/provider-composer.ts +21 -451
  530. package/packages/agent/src/core/skills.ts +8 -440
  531. package/packages/agent/src/core/tool-definition.ts +29 -0
  532. package/packages/agent/src/core/tools/bash.ts +22 -41
  533. package/packages/agent/src/core/tools/edit-diff.ts +0 -60
  534. package/packages/agent/src/core/tools/edit.ts +4 -29
  535. package/packages/agent/src/core/tools/index.ts +4 -130
  536. package/packages/agent/src/core/tools/output-accumulator.ts +33 -5
  537. package/packages/agent/src/core/tools/path-utils.ts +2 -49
  538. package/packages/agent/src/core/tools/read.ts +6 -29
  539. package/packages/agent/src/core/tools/truncate.ts +0 -15
  540. package/packages/agent/src/core/tools/write.ts +2 -13
  541. package/packages/agent/src/index.ts +23 -270
  542. package/packages/{agent-core/src → agent/src/loop}/agent-loop.ts +128 -275
  543. package/packages/{agent-core/src → agent/src/loop}/agent.ts +20 -166
  544. package/packages/{agent-core/src → agent/src/loop}/types.ts +6 -105
  545. package/packages/agent/src/utils/child-process.ts +0 -13
  546. package/packages/agent/src/utils/image-convert.ts +0 -25
  547. package/packages/agent/src/utils/paths.ts +1 -71
  548. package/packages/agent/src/utils/shell.ts +13 -156
  549. package/packages/ai/dist/api/ai-sdk-messages.d.ts +9 -0
  550. package/packages/ai/dist/api/ai-sdk-transport.d.ts +13 -0
  551. package/packages/ai/dist/api/ai-sdk.d.ts +15 -0
  552. package/packages/ai/dist/api/ai-sdk.lazy.d.ts +3 -0
  553. package/packages/ai/dist/api/lazy.d.ts +15 -0
  554. package/packages/ai/dist/api/simple-options.d.ts +4 -0
  555. package/packages/ai/dist/api/transform-messages.d.ts +8 -0
  556. package/packages/ai/dist/api-registry.d.ts +25 -0
  557. package/packages/ai/dist/auth/context.d.ts +4 -0
  558. package/packages/ai/dist/auth/helpers.d.ts +4 -0
  559. package/packages/ai/dist/auth/resolve.d.ts +19 -0
  560. package/packages/ai/dist/auth/types.d.ts +51 -0
  561. package/packages/ai/dist/env-api-keys.d.ts +8 -0
  562. package/packages/ai/dist/index.d.ts +19 -0
  563. package/packages/ai/dist/models.d.ts +71 -0
  564. package/packages/ai/dist/models.generated.d.ts +8021 -0
  565. package/packages/ai/dist/providers/all.d.ts +15 -0
  566. package/packages/ai/dist/providers/faux.d.ts +97 -0
  567. package/packages/ai/dist/providers/openrouter.d.ts +3 -0
  568. package/packages/ai/dist/providers/openrouter.models.d.ts +8019 -0
  569. package/packages/ai/dist/types.d.ts +543 -0
  570. package/packages/ai/dist/utils/diagnostics.d.ts +13 -0
  571. package/packages/ai/dist/utils/error-body.d.ts +25 -0
  572. package/packages/ai/dist/utils/estimate.d.ts +17 -0
  573. package/packages/ai/dist/utils/event-stream.d.ts +21 -0
  574. package/packages/ai/dist/utils/headers.d.ts +2 -0
  575. package/packages/ai/dist/utils/json-parse.d.ts +16 -0
  576. package/packages/ai/dist/utils/overflow.d.ts +54 -0
  577. package/packages/ai/dist/utils/provider-env.d.ts +7 -0
  578. package/packages/ai/dist/utils/retry.d.ts +12 -0
  579. package/packages/ai/dist/utils/sanitize-unicode.d.ts +22 -0
  580. package/packages/ai/dist/utils/typebox-helpers.d.ts +17 -0
  581. package/packages/ai/dist/utils/validation.d.ts +10 -0
  582. package/packages/ai/package.json +2 -6
  583. package/packages/ai/src/api/ai-sdk-messages.ts +15 -10
  584. package/packages/ai/src/api/ai-sdk-transport.ts +2 -2
  585. package/packages/ai/src/api/ai-sdk.ts +11 -0
  586. package/packages/ai/src/api/simple-options.ts +0 -34
  587. package/packages/ai/src/api/transform-messages.ts +1 -1
  588. package/packages/ai/src/api-registry.ts +1 -12
  589. package/packages/ai/src/auth/context.ts +1 -30
  590. package/packages/ai/src/auth/helpers.ts +3 -34
  591. package/packages/ai/src/auth/resolve.ts +10 -108
  592. package/packages/ai/src/auth/types.ts +9 -176
  593. package/packages/ai/src/index.ts +1 -13
  594. package/packages/ai/src/models.ts +41 -407
  595. package/packages/ai/src/providers/all.ts +3 -31
  596. package/packages/ai/src/providers/openrouter.models.ts +14 -0
  597. package/packages/ai/src/types.ts +2 -104
  598. package/packages/ai/src/utils/diagnostics.ts +0 -32
  599. package/packages/ai/src/utils/headers.ts +0 -11
  600. package/packages/ai/src/utils/overflow.ts +0 -7
  601. package/packages/ai/src/utils/retry.ts +14 -0
  602. package/packages/ai/src/utils/validation.ts +0 -15
  603. package/packages/ragents/package.json +3 -6
  604. package/packages/ragents/src/access.ts +2 -1
  605. package/packages/ragents/src/agents/actor-input.ts +29 -18
  606. package/packages/ragents/src/agents/catalog.ts +3 -3
  607. package/packages/ragents/src/agents/model-context.ts +360 -0
  608. package/packages/ragents/src/agents/plugins.ts +0 -4
  609. package/packages/ragents/src/agents/scheduler.ts +233 -83
  610. package/packages/ragents/src/agents/schemas.ts +1 -36
  611. package/packages/ragents/src/agents/tool-orientation.ts +1 -1
  612. package/packages/ragents/src/agents/tools.ts +74 -75
  613. package/packages/ragents/src/agents/toolset.ts +51 -24
  614. package/packages/ragents/src/agents/turn.ts +2 -14
  615. package/packages/ragents/src/agents/workspaces.ts +12 -0
  616. package/packages/ragents/src/domain/actor-reference.ts +22 -0
  617. package/packages/ragents/src/domain/driver.ts +0 -9
  618. package/packages/ragents/src/domain/event-semantics.ts +111 -72
  619. package/packages/ragents/src/domain/event-validation.ts +188 -21
  620. package/packages/ragents/src/domain/events.ts +91 -7
  621. package/packages/ragents/src/domain/json.ts +2 -0
  622. package/packages/ragents/src/domain/model.ts +42 -18
  623. package/packages/ragents/src/domain/projection.ts +52 -15
  624. package/packages/ragents/src/domain/schema-errors.ts +3 -3
  625. package/packages/ragents/src/domain/tool-result-text.ts +9 -0
  626. package/packages/ragents/src/drivers/agent-hooks.ts +27 -0
  627. package/packages/ragents/src/drivers/agent-runtime.ts +137 -1020
  628. package/packages/ragents/src/drivers/agent-turn.ts +735 -0
  629. package/packages/ragents/src/drivers/agent.ts +13 -26
  630. package/packages/ragents/src/drivers/attachments.ts +4 -24
  631. package/packages/ragents/src/drivers/skill-preload.ts +56 -78
  632. package/packages/ragents/src/drivers/types.ts +39 -6
  633. package/packages/ragents/src/http/contracts.ts +16 -3
  634. package/packages/ragents/src/http/methods.ts +32 -33
  635. package/packages/ragents/src/index.ts +12 -21
  636. package/packages/ragents/src/plugin-host.ts +150 -105
  637. package/packages/ragents/src/plugin-types.ts +86 -23
  638. package/packages/ragents/src/rpc/peer.ts +6 -0
  639. package/packages/ragents/src/runtime/decisions/actions.ts +40 -37
  640. package/packages/ragents/src/runtime/decisions/actors.ts +100 -51
  641. package/packages/ragents/src/runtime/decisions/artifacts.ts +2 -2
  642. package/packages/ragents/src/runtime/decisions/inputs.ts +3 -3
  643. package/packages/ragents/src/runtime/decisions/subscriptions.ts +9 -7
  644. package/packages/ragents/src/runtime/decisions/turns.ts +101 -9
  645. package/packages/ragents/src/runtime/guards.ts +12 -21
  646. package/packages/ragents/src/runtime/journal-storage.ts +8 -3
  647. package/packages/ragents/src/runtime/journal.ts +36 -1
  648. package/packages/ragents/src/runtime/orchestration.ts +167 -19
  649. package/packages/ragents/src/runtime/serial-queue.ts +24 -0
  650. package/packages/ragents/src/runtime/stop.ts +19 -44
  651. package/packages/ragents/src/script/mediators.ts +4 -5
  652. package/packages/ragents/src/typescript/index.ts +2 -0
  653. package/packages/ragents/src/typescript/run-context.ts +10 -8
  654. package/packages/ragents/src/typescript/snippet.ts +7 -6
  655. package/packages/workspace-executor/package.json +2 -2
  656. package/packages/workspace-executor/src/bash-launch.ts +45 -0
  657. package/packages/workspace-executor/src/browser/contract.ts +71 -0
  658. package/packages/workspace-executor/src/browser/module.ts +74 -0
  659. package/packages/workspace-executor/src/browser/pages.ts +298 -0
  660. package/packages/workspace-executor/src/browser/playwright.ts +52 -0
  661. package/packages/workspace-executor/src/commands.ts +170 -0
  662. package/packages/workspace-executor/src/context.ts +34 -6
  663. package/packages/workspace-executor/src/errors.ts +12 -0
  664. package/packages/workspace-executor/src/executor.ts +62 -104
  665. package/packages/workspace-executor/src/files.ts +287 -0
  666. package/packages/workspace-executor/src/index.ts +82 -18
  667. package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +1 -0
  668. package/packages/workspace-executor/src/language-server/contract.ts +14 -0
  669. package/packages/workspace-executor/src/language-server/host.ts +82 -26
  670. package/packages/workspace-executor/src/language-server/module.ts +107 -0
  671. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +90 -0
  672. package/packages/workspace-executor/src/managed-process.ts +1 -1
  673. package/packages/workspace-executor/src/module.ts +35 -0
  674. package/packages/workspace-executor/src/modules.ts +25 -0
  675. package/packages/workspace-executor/src/paths.ts +57 -5
  676. package/packages/workspace-executor/src/process-sandbox.ts +16 -0
  677. package/packages/workspace-executor/src/processes/module.ts +48 -0
  678. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/process-table.ts +80 -57
  679. package/packages/workspace-executor/src/processes/scanner.ts +106 -0
  680. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/snapshot.ts +23 -11
  681. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/terminator.ts +19 -20
  682. package/packages/workspace-executor/src/run-folders.ts +33 -0
  683. package/packages/workspace-executor/src/safe-environment.ts +14 -0
  684. package/packages/workspace-executor/src/sandbox-tools.ts +212 -43
  685. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  686. package/plugins/package.json +1 -1
  687. package/plugins/ragents.activity/ragents-plugin.json +3 -0
  688. package/plugins/ragents.activity/server/index.ts +2 -2
  689. package/plugins/ragents.activity/web/ActivityHeader.tsx +2 -2
  690. package/plugins/ragents.activity/web/activity.ts +1 -1
  691. package/plugins/ragents.activity/web/index.tsx +1 -1
  692. package/plugins/ragents.actor-programs/prompt.hbs +8 -7
  693. package/plugins/ragents.actor-programs/ragents-plugin.json +3 -0
  694. package/plugins/ragents.actor-programs/server/agent-tools.ts +3 -3
  695. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/capability-resolver.ts +1 -16
  696. package/plugins/ragents.actor-programs/server/controls-template.ts +5 -18
  697. package/plugins/ragents.actor-programs/server/controls-tool.ts +8 -11
  698. package/plugins/ragents.actor-programs/server/index.ts +10 -10
  699. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/limits.ts +4 -4
  700. package/plugins/ragents.actor-programs/server/methods.ts +2 -2
  701. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/operations.ts +2 -4
  702. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +65 -70
  703. package/plugins/ragents.actor-programs/server/prompts.ts +4 -4
  704. package/plugins/ragents.actor-programs/server/routes.ts +14 -8
  705. package/plugins/ragents.actor-programs/server/runtime.ts +132 -55
  706. package/plugins/ragents.actor-programs/server/templates.ts +35 -80
  707. package/plugins/ragents.actor-programs/server/test-report.ts +106 -0
  708. package/plugins/ragents.actor-programs/server/tool-contributor.ts +4 -4
  709. package/plugins/ragents.actor-programs/summary.hbs +1 -1
  710. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +15 -10
  711. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +47 -30
  712. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +15 -17
  713. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +3 -3
  714. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +3 -3
  715. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +12 -3
  716. package/plugins/ragents.actor-programs/web/api.ts +5 -5
  717. package/plugins/ragents.actor-programs/web/bridge.ts +2 -3
  718. package/plugins/ragents.actor-programs/web/chat-state.ts +9 -8
  719. package/plugins/ragents.actor-programs/web/index.tsx +7 -17
  720. package/plugins/ragents.actor-programs/web/program-state.ts +3 -3
  721. package/plugins/ragents.actor-programs/web/state-revision.ts +2 -2
  722. package/plugins/ragents.ask/ask-payload.ts +25 -0
  723. package/plugins/ragents.ask/contract.ts +2 -2
  724. package/plugins/ragents.ask/ragents-plugin.json +7 -0
  725. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  726. package/plugins/ragents.ask/server/ask-service.ts +43 -19
  727. package/plugins/ragents.ask/server/ask-tool.ts +2 -2
  728. package/plugins/ragents.ask/server/contract.ts +9 -1
  729. package/plugins/ragents.ask/server/index.ts +8 -10
  730. package/plugins/ragents.ask/server/tool-contributor.ts +3 -3
  731. package/plugins/ragents.ask/web/AskActionView.tsx +36 -0
  732. package/{apps/web/src/chat → plugins/ragents.ask/web}/QuestionCard.tsx +7 -5
  733. package/plugins/ragents.ask/web/QuestionSection.tsx +22 -21
  734. package/plugins/ragents.ask/web/api.ts +1 -1
  735. package/plugins/ragents.ask/web/index.tsx +11 -8
  736. package/plugins/ragents.browser/provision.ts +9 -8
  737. package/plugins/ragents.browser/ragents-plugin.json +6 -0
  738. package/plugins/ragents.browser/server/browser.ts +165 -286
  739. package/plugins/ragents.browser/server/contract.ts +8 -19
  740. package/plugins/ragents.browser/server/index.ts +8 -7
  741. package/plugins/ragents.browser/server/tools.ts +29 -37
  742. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +3 -1
  743. package/plugins/ragents.documents/contract.ts +4 -2
  744. package/plugins/ragents.documents/ragents-plugin.json +6 -0
  745. package/plugins/ragents.documents/server/config.ts +1 -1
  746. package/plugins/ragents.documents/server/document-write-tool.ts +2 -2
  747. package/plugins/ragents.documents/server/files-route.ts +2 -3
  748. package/plugins/ragents.documents/server/index.ts +10 -11
  749. package/plugins/ragents.documents/server/show-document-tool.ts +2 -2
  750. package/plugins/ragents.documents/server/store.ts +3 -3
  751. package/plugins/ragents.documents/server/tool-contributor.ts +3 -3
  752. package/plugins/ragents.documents/web/DocumentViewer.tsx +5 -6
  753. package/plugins/ragents.documents/web/api.ts +1 -1
  754. package/plugins/ragents.documents/web/index.tsx +4 -4
  755. package/plugins/ragents.lsp-fsharp/provision.ts +2 -2
  756. package/plugins/ragents.lsp-fsharp/ragents-plugin.json +3 -0
  757. package/plugins/ragents.lsp-fsharp/server/index.ts +3 -3
  758. package/plugins/ragents.lsp-fsharp/web/index.tsx +1 -1
  759. package/plugins/ragents.lsp-roslyn/provision.ts +2 -2
  760. package/plugins/ragents.lsp-roslyn/ragents-plugin.json +3 -0
  761. package/plugins/ragents.lsp-roslyn/server/index.ts +47 -8
  762. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +145 -0
  763. package/plugins/ragents.lsp-roslyn/web/index.tsx +1 -1
  764. package/plugins/ragents.lsp-typescript/ragents-plugin.json +3 -0
  765. package/plugins/ragents.lsp-typescript/server/index.ts +3 -3
  766. package/plugins/ragents.lsp-typescript/web/index.tsx +1 -1
  767. package/plugins/ragents.model-relay/ragents-plugin.json +3 -0
  768. package/plugins/ragents.model-relay/server/config.ts +5 -31
  769. package/plugins/ragents.model-relay/server/index.ts +5 -6
  770. package/plugins/ragents.model-relay/server/relay.ts +8 -9
  771. package/plugins/ragents.orchestration/contract.ts +13 -14
  772. package/plugins/ragents.orchestration/orchestration.hbs +4 -3
  773. package/plugins/ragents.orchestration/ragents-plugin.json +6 -0
  774. package/plugins/ragents.orchestration/server/index.ts +13 -16
  775. package/plugins/ragents.orchestration/server/run-stop-tool.ts +4 -4
  776. package/plugins/ragents.orchestration/server/{canvas-tool.ts → surface-tool.ts} +42 -43
  777. package/plugins/ragents.orchestration/surface.hbs +34 -0
  778. package/plugins/ragents.orchestration/tiled-layout.ts +16 -16
  779. package/plugins/ragents.orchestration/web/ActorChat.tsx +16 -14
  780. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +23 -26
  781. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +5 -6
  782. package/plugins/ragents.orchestration/web/ActorPopout.tsx +7 -5
  783. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +16 -16
  784. package/plugins/ragents.orchestration/web/{ActorCanvasControls.tsx → ActorSurfaceControls.tsx} +23 -28
  785. package/plugins/ragents.orchestration/web/ActorTile.tsx +2 -2
  786. package/plugins/ragents.orchestration/web/Center.tsx +47 -55
  787. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +4 -4
  788. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +7 -7
  789. package/plugins/ragents.orchestration/web/FlowInspector.tsx +24 -42
  790. package/plugins/ragents.orchestration/web/JournalStatus.tsx +8 -8
  791. package/plugins/ragents.orchestration/web/MaterialBody.tsx +5 -5
  792. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  793. package/plugins/ragents.orchestration/web/SurfaceStartup.tsx +8 -0
  794. package/plugins/ragents.orchestration/web/{CanvasTiles.tsx → SurfaceTiles.tsx} +18 -18
  795. package/plugins/ragents.orchestration/web/{TiledCanvas.tsx → TiledSurface.tsx} +22 -22
  796. package/plugins/ragents.orchestration/web/actor-header-settings.ts +2 -2
  797. package/plugins/ragents.orchestration/web/api.ts +4 -10
  798. package/plugins/ragents.orchestration/web/constants.ts +0 -1
  799. package/plugins/ragents.orchestration/web/executions.ts +3 -3
  800. package/plugins/ragents.orchestration/web/index.tsx +19 -124
  801. package/plugins/ragents.orchestration/web/program-slot.ts +14 -0
  802. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +95 -0
  803. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +109 -0
  804. package/plugins/ragents.orchestration/web/{column/RunColumn.tsx → run-panel/RunPanel.tsx} +211 -83
  805. package/plugins/ragents.orchestration/web/{column/ColumnSettings.tsx → run-panel/RunPanelSettings.tsx} +13 -13
  806. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +165 -0
  807. package/plugins/ragents.orchestration/web/{column/column-actors.ts → run-panel/run-panel-actors.ts} +14 -13
  808. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +47 -0
  809. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +30 -0
  810. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +71 -0
  811. package/plugins/ragents.orchestration/web/{column → run-panel}/sheet-status.ts +4 -4
  812. package/plugins/ragents.orchestration/web/{canvas-stage.ts → surface-entities.ts} +2 -2
  813. package/plugins/ragents.orchestration/web/{canvas-startup.ts → surface-startup.ts} +7 -10
  814. package/plugins/ragents.orchestration/web/surface-view-settings.ts +42 -0
  815. package/plugins/ragents.orchestration/web/tile-docking.ts +14 -14
  816. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +26 -26
  817. package/plugins/ragents.overseer/contract.ts +20 -14
  818. package/plugins/ragents.overseer/ragents-plugin.json +3 -0
  819. package/plugins/ragents.overseer/server/api.ts +34 -23
  820. package/plugins/ragents.overseer/server/coordinator-prompt.ts +3 -3
  821. package/plugins/ragents.overseer/server/coordinator.ts +19 -0
  822. package/plugins/ragents.overseer/server/index.ts +39 -27
  823. package/plugins/ragents.overseer/server/orientation.ts +4 -5
  824. package/plugins/ragents.overseer/server/quick-answer.ts +5 -4
  825. package/plugins/ragents.overseer/server/reset-method.ts +4 -3
  826. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  827. package/plugins/ragents.overseer/server/settings-method.ts +1 -1
  828. package/plugins/ragents.overseer/server/settings.ts +6 -6
  829. package/plugins/ragents.overseer/server/user-location.ts +20 -19
  830. package/plugins/ragents.overseer/web/ModelSettings.tsx +4 -4
  831. package/plugins/ragents.overseer/web/chat-display.ts +1 -1
  832. package/plugins/ragents.overseer/web/index.tsx +51 -26
  833. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  834. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  835. package/plugins/ragents.processes/contract.ts +5 -5
  836. package/plugins/ragents.processes/ragents-plugin.json +3 -0
  837. package/plugins/ragents.processes/server/index.ts +13 -19
  838. package/plugins/ragents.processes/server/methods.ts +18 -20
  839. package/plugins/ragents.processes/server/observer.ts +64 -104
  840. package/plugins/ragents.processes/server/run-processes.ts +24 -0
  841. package/plugins/ragents.processes/web/ProcessHeader.tsx +13 -16
  842. package/plugins/ragents.processes/web/index.tsx +2 -1
  843. package/plugins/ragents.processes/web/processes.ts +1 -1
  844. package/plugins/ragents.product/ragents-plugin.json +3 -0
  845. package/plugins/ragents.product/server/config.ts +12 -13
  846. package/plugins/ragents.product/server/index.ts +15 -16
  847. package/plugins/ragents.product/server/runtime.ts +2 -2
  848. package/plugins/ragents.product/web/index.tsx +3 -3
  849. package/plugins/ragents.profile-distribution/contract.ts +6 -9
  850. package/plugins/ragents.profile-distribution/ragents-plugin.json +3 -0
  851. package/plugins/ragents.profile-distribution/server/archive.ts +26 -51
  852. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  853. package/plugins/ragents.profile-distribution/server/index.ts +9 -16
  854. package/plugins/ragents.reference/examples.ts +1 -1
  855. package/plugins/ragents.reference/ragents-plugin.json +3 -0
  856. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +2 -2
  857. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +1 -1
  858. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -1
  859. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +4 -4
  860. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +1 -1
  861. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +1 -1
  862. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  863. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +2 -2
  864. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +1 -1
  865. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -1
  866. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/state.ts +2 -2
  867. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +11 -11
  868. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +15 -15
  869. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +4 -9
  870. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +1 -1
  871. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  872. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +2 -2
  873. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +6 -6
  874. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +3 -3
  875. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  876. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +1 -1
  877. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  878. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +1 -2
  879. package/plugins/ragents.reference/run-scripts/word-game/src/state.ts +6 -6
  880. package/plugins/ragents.reference/run-scripts/word-game/src/view.tsx +14 -14
  881. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +7 -8
  882. package/plugins/ragents.reference/server/index.ts +2 -2
  883. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +1 -1
  884. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +1 -1
  885. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +1 -1
  886. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  887. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +2 -2
  888. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +2 -2
  889. package/plugins/ragents.reference/walkthroughs.ts +19 -19
  890. package/plugins/ragents.reference/web/StartGuides.tsx +2 -2
  891. package/plugins/ragents.reference/web/index.tsx +1 -1
  892. package/plugins/ragents.todo/ragents-plugin.json +3 -0
  893. package/plugins/ragents.todo/server/index.ts +2 -2
  894. package/plugins/ragents.todo/server/todo-tool.ts +4 -5
  895. package/plugins/ragents.todo/server/tool-contributor.ts +2 -2
  896. package/plugins/ragents.todo/web/TodoSection.tsx +3 -3
  897. package/plugins/ragents.todo/web/index.ts +1 -1
  898. package/plugins/ragents.transcript/ragents-plugin.json +3 -0
  899. package/plugins/ragents.transcript/server/index.ts +4 -4
  900. package/plugins/ragents.transcript/server/transcript.ts +2 -3
  901. package/plugins/ragents.watch/ragents-plugin.json +6 -0
  902. package/plugins/ragents.watch/server/condition.ts +2 -2
  903. package/plugins/ragents.watch/server/contract.ts +1 -1
  904. package/plugins/ragents.watch/server/functions.ts +3 -3
  905. package/plugins/ragents.watch/server/index.ts +3 -3
  906. package/plugins/ragents.watch/server/observation.ts +6 -6
  907. package/plugins/ragents.watch/server/service.ts +5 -5
  908. package/plugins/ragents.workspace/client/workspace-client.ts +129 -58
  909. package/plugins/ragents.workspace/contract.ts +98 -35
  910. package/plugins/ragents.workspace/prompt.hbs +1 -8
  911. package/plugins/ragents.workspace/ragents-plugin.json +3 -0
  912. package/plugins/ragents.workspace/server/binding.ts +122 -39
  913. package/plugins/ragents.workspace/server/browse-route.ts +96 -103
  914. package/plugins/ragents.workspace/server/clients.ts +236 -68
  915. package/plugins/ragents.workspace/server/config.ts +30 -0
  916. package/plugins/ragents.workspace/server/index.ts +61 -26
  917. package/plugins/ragents.workspace/server/runtime.ts +271 -46
  918. package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/shell-platform.ts +3 -5
  919. package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/workspace-tool-naming.ts +7 -1
  920. package/plugins/ragents.workspace/web/FileBrowser.tsx +11 -8
  921. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +115 -61
  922. package/plugins/ragents.workspace/web/api.ts +1 -1
  923. package/plugins/ragents.workspace/web/index.tsx +1 -1
  924. package/ragents.config.core.ts +2 -7
  925. package/ragents.config.showcase.ts +2 -5
  926. package/scripts/agent/agent-cli.ts +265 -107
  927. package/scripts/agent/journal.ts +8 -4
  928. package/scripts/agent/turn-control.ts +19 -0
  929. package/scripts/package/build-package.ts +68 -13
  930. package/scripts/package/ragents.mjs +4 -2
  931. package/scripts/plugin/build-builtin-plugins.ts +52 -0
  932. package/scripts/plugin/plugin-cli.ts +99 -0
  933. package/scripts/provision/run-provision.ts +20 -18
  934. package/scripts/remote/connect.ts +75 -53
  935. package/scripts/remote/start.ts +2 -3
  936. package/scripts/workspace-client/run-workspace-client.ts +15 -9
  937. package/apps/server/agent-home/settings.json +0 -3
  938. package/apps/server/src/chat-attachments.ts +0 -52
  939. package/apps/server/src/chat-events.ts +0 -185
  940. package/apps/server/src/plugin-support/asset-path.ts +0 -4
  941. package/apps/server/src/profile/plugin-list.ts +0 -19
  942. package/apps/server/src/web-build.ts +0 -82
  943. package/apps/web/column.html +0 -12
  944. package/apps/web/index.html +0 -12
  945. package/apps/web/src/StartSurface.tsx +0 -161
  946. package/apps/web/src/chat/ChatInputToolbar.tsx +0 -488
  947. package/apps/web/src/chat/ChatMessages.tsx +0 -666
  948. package/apps/web/src/chat/ChatPanel.tsx +0 -61
  949. package/apps/web/src/chat/DetailModeSwitch.tsx +0 -58
  950. package/apps/web/src/chat/Markdown.tsx +0 -104
  951. package/apps/web/src/chat/StepPopover.tsx +0 -82
  952. package/apps/web/src/chat/WorkingScenes.tsx +0 -235
  953. package/apps/web/src/chat/attachments.ts +0 -53
  954. package/apps/web/src/chat/chat-scroll.ts +0 -41
  955. package/apps/web/src/chat/texts.ts +0 -61
  956. package/apps/web/src/chat/types.ts +0 -26
  957. package/apps/web/src/column/ColumnApp.tsx +0 -234
  958. package/apps/web/src/column/column-location.ts +0 -30
  959. package/apps/web/src/column/host-contract.ts +0 -93
  960. package/apps/web/src/panel/OverviewPage.tsx +0 -215
  961. package/apps/web/src/panel/SettingsPage.tsx +0 -98
  962. package/apps/web/src/panel/target-state.ts +0 -78
  963. package/apps/web/src/plugin-discovery.ts +0 -5
  964. package/apps/web/src/virtual-plugins.d.ts +0 -3
  965. package/apps/web/vite.config.ts +0 -140
  966. package/packages/agent/src/config.ts +0 -161
  967. package/packages/agent/src/core/agent-session-runtime.ts +0 -548
  968. package/packages/agent/src/core/agent-session-services.ts +0 -224
  969. package/packages/agent/src/core/agent-session.ts +0 -3357
  970. package/packages/agent/src/core/auth-guidance.ts +0 -18
  971. package/packages/agent/src/core/auth-storage.ts +0 -271
  972. package/packages/agent/src/core/bash-executor.ts +0 -156
  973. package/packages/agent/src/core/compaction/branch-summarization.ts +0 -372
  974. package/packages/agent/src/core/defaults.ts +0 -3
  975. package/packages/agent/src/core/diagnostics.ts +0 -15
  976. package/packages/agent/src/core/event-bus.ts +0 -33
  977. package/packages/agent/src/core/exec.ts +0 -107
  978. package/packages/agent/src/core/experimental.ts +0 -3
  979. package/packages/agent/src/core/extensions/index.ts +0 -149
  980. package/packages/agent/src/core/extensions/loader.ts +0 -709
  981. package/packages/agent/src/core/extensions/runner.ts +0 -1132
  982. package/packages/agent/src/core/extensions/types.ts +0 -1460
  983. package/packages/agent/src/core/extensions/wrapper.ts +0 -45
  984. package/packages/agent/src/core/footer-data-provider.ts +0 -388
  985. package/packages/agent/src/core/http-dispatcher.ts +0 -106
  986. package/packages/agent/src/core/index.ts +0 -78
  987. package/packages/agent/src/core/model-config.ts +0 -287
  988. package/packages/agent/src/core/model-registry.ts +0 -126
  989. package/packages/agent/src/core/model-resolver.ts +0 -675
  990. package/packages/agent/src/core/output-guard.ts +0 -108
  991. package/packages/agent/src/core/package-manager.ts +0 -2441
  992. package/packages/agent/src/core/prompt-templates.ts +0 -284
  993. package/packages/agent/src/core/resolve-config-value.ts +0 -287
  994. package/packages/agent/src/core/resource-loader.ts +0 -946
  995. package/packages/agent/src/core/runtime-credentials.ts +0 -48
  996. package/packages/agent/src/core/sdk.ts +0 -358
  997. package/packages/agent/src/core/session-cwd.ts +0 -59
  998. package/packages/agent/src/core/session-manager.ts +0 -1623
  999. package/packages/agent/src/core/settings-manager.ts +0 -1212
  1000. package/packages/agent/src/core/slash-commands.ts +0 -41
  1001. package/packages/agent/src/core/source-info.ts +0 -40
  1002. package/packages/agent/src/core/system-prompt.ts +0 -147
  1003. package/packages/agent/src/core/timings.ts +0 -50
  1004. package/packages/agent/src/core/tools/tool-definition-wrapper.ts +0 -45
  1005. package/packages/agent/src/core/trust-manager.ts +0 -244
  1006. package/packages/agent/src/utils/ansi.ts +0 -60
  1007. package/packages/agent/src/utils/fs-watch.ts +0 -30
  1008. package/packages/agent/src/utils/git.ts +0 -226
  1009. package/packages/agent/src/utils/json.ts +0 -6
  1010. package/packages/agent/src/utils/tools-manager.ts +0 -63
  1011. package/packages/agent-core/package.json +0 -32
  1012. package/packages/ai/src/api/openrouter-images.lazy.ts +0 -10
  1013. package/packages/ai/src/api/openrouter-images.ts +0 -98
  1014. package/packages/ai/src/auth/credential-store.ts +0 -51
  1015. package/packages/ai/src/compat/extension-oauth-types.ts +0 -45
  1016. package/packages/ai/src/image-models.generated.ts +0 -533
  1017. package/packages/ai/src/images-models.ts +0 -274
  1018. package/packages/ai/src/models-store.ts +0 -38
  1019. package/packages/ai/src/oauth.ts +0 -10
  1020. package/packages/ai/src/providers/openrouter-images.ts +0 -14
  1021. package/packages/ai/src/session-resources.ts +0 -24
  1022. package/packages/ai/src/utils/abort-signals.ts +0 -41
  1023. package/packages/ai/src/utils/deferred-tools.ts +0 -39
  1024. package/packages/ai/src/utils/hash.ts +0 -13
  1025. package/packages/ai/src/utils/node-http-proxy.ts +0 -112
  1026. package/plugins/ragents.actor-programs/server/client-runtime.ts +0 -16
  1027. package/plugins/ragents.ask/web/constants.ts +0 -1
  1028. package/plugins/ragents.lsp-roslyn/web/api.ts +0 -10
  1029. package/plugins/ragents.orchestration/web/CanvasStartup.tsx +0 -14
  1030. package/plugins/ragents.orchestration/web/canvas-view-settings.ts +0 -42
  1031. package/plugins/ragents.orchestration/web/column/AddresseeControl.tsx +0 -116
  1032. package/plugins/ragents.orchestration/web/column/column-settings.ts +0 -47
  1033. package/plugins/ragents.orchestration/web/column/column-state.ts +0 -68
  1034. package/plugins/ragents.orchestration/web/contract.ts +0 -25
  1035. package/plugins/ragents.product/model-settings-contract.ts +0 -10
  1036. package/plugins/ragents.profile-distribution/server/web.ts +0 -24
  1037. /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/authoring-contracts.ts +0 -0
  1038. /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/runtime-libraries.ts +0 -0
  1039. /package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/prompt-reader.ts +0 -0
  1040. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-contracts.d.ts +0 -0
  1041. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram-contracts.d.ts +0 -0
  1042. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram.css +0 -0
  1043. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/form-contracts.d.ts +0 -0
  1044. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/frame-layout.ts +0 -0
  1045. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/table-contracts.d.ts +0 -0
  1046. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/viewer-contracts.d.ts +0 -0
  1047. /package/{plugins/ragents.orchestration/canvas.hbs → bundles/ragents.orchestration/surface.hbs} +0 -0
  1048. /package/packages/{agent-core/src → agent/src/loop}/index.ts +0 -0
  1049. /package/packages/{agent-core/src → agent/src/loop}/uuid.ts +0 -0
@@ -0,0 +1,261 @@
1
+ (() => {
2
+ const story = document.querySelector('[data-dm-story]');
3
+ const stage = story?.querySelector('[data-dm-stage]');
4
+ const { gsap, ScrollTrigger } = window;
5
+ if (!story || !stage || !gsap || !ScrollTrigger) return;
6
+ const header = document.querySelector('.masthead');
7
+ const steps = [...story.querySelectorAll('.dm-step')];
8
+
9
+ const order = ['ui', 'runs', 'ghost', 'tools', 'models', 'profile'];
10
+ const icons = { ui: 'browser', runs: 'run', ghost: 'run', tools: 'tools', models: 'models', profile: 'profile' };
11
+ const tones = { ui: 'dm-cream', runs: 'dm-agent', ghost: 'dm-note', tools: 'dm-app', models: 'dm-coord', profile: 'dm-script' };
12
+ const modes = [
13
+ {
14
+ step: 'Laptop',
15
+ heading: 'One laptop, one process',
16
+ caption: 'Everything but the model calls stays on your laptop.',
17
+ idle: 'server',
18
+ items: { ui: ['laptop', 'VS Code', 'or a browser'], runs: ['laptop', 'Runs', 'agents, journal'], tools: ['laptop', 'Tools', 'files, shell, Git'], models: ['laptop', 'Models', 'your own key'] },
19
+ links: [['ui', 'runs', ''], ['runs', 'tools', ''], ['runs', 'models', 'model calls']],
20
+ },
21
+ {
22
+ step: 'Server',
23
+ heading: 'One server, many browsers',
24
+ caption: 'Every browser talks to its run. Files and tools stay on the server.',
25
+ items: { ui: ['laptop', 'Browsers', 'you, your team, clients'], runs: ['server', 'Runs', 'agents, journal'], tools: ['server', 'Tools', 'a folder per run'], models: ['server', 'Models', 'keys stay here'], profile: ['server', 'Profile', 'prompts, skills, plugins'] },
26
+ links: [['ui', 'runs', 'live'], ['runs', 'tools', ''], ['runs', 'models', '']],
27
+ },
28
+ {
29
+ step: 'Server + laptop',
30
+ heading: 'Coordinate centrally, run tools locally',
31
+ caption: 'The run sends a tool call to your laptop. It runs on your files, the result goes back.',
32
+ items: { ui: ['laptop', 'VS Code', 'chat, mini-apps'], runs: ['server', 'Runs', 'agents, journal'], tools: ['laptop', 'Tools', 'your checkout'], models: ['server', 'Models', 'keys stay here'], profile: ['server', 'Profile', 'prompts, skills, plugins'] },
33
+ links: [['ui', 'runs', 'chat, live'], ['runs', 'tools', 'tool call'], ['runs', 'models', '']],
34
+ },
35
+ {
36
+ step: 'Connected',
37
+ heading: 'Local runs, central profile and models',
38
+ caption: 'The profile arrives once. Model calls go through the relay, which shows only an alias.',
39
+ items: { ui: ['laptop', 'VS Code', 'or a browser'], runs: ['laptop', 'Runs', 'journal stays here'], tools: ['laptop', 'Tools', 'your checkout'], models: ['server', 'Model relay', 'aliases only'], profile: ['server', 'Profile', 'fetched once'] },
40
+ links: [['ui', 'runs', ''], ['runs', 'tools', ''], ['runs', 'models', 'model calls'], ['profile', 'runs', 'once, cached']],
41
+ },
42
+ {
43
+ step: 'Move a run',
44
+ heading: 'A run changes machines',
45
+ caption: 'The run continues on the server. Its folder stays bound to your laptop.',
46
+ items: { ui: ['laptop', 'Browser', 'or VS Code'], runs: ['server', 'Run A', 'continues here'], ghost: ['laptop', 'Run A', 'copy until deleted'], tools: ['laptop', 'Tools', 'folder stays'], models: ['server', 'Models', 'keys stay here'], profile: ['server', 'Profile', 'prompts, skills, plugins'] },
47
+ links: [['ghost', 'runs', 'run archive'], ['runs', 'tools', ''], ['ui', 'runs', 'live']],
48
+ },
49
+ ];
50
+
51
+ const svg = (tag, attributes) => {
52
+ const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
53
+ Object.entries(attributes).forEach(([name, value]) => element.setAttribute(name, value));
54
+ return element;
55
+ };
56
+ const icon = name => `<svg aria-hidden="true"><use href="#dm-i-${name}"/></svg>`;
57
+ const layout = mode => {
58
+ const lanes = { laptop: [], server: [] };
59
+ order.filter(key => mode.items[key]).forEach(key => lanes[mode.items[key][0]].push(key));
60
+ return Object.fromEntries(Object.entries(lanes).flatMap(([lane, keys]) => keys.map((key, index) => [key, {
61
+ x: lane === 'laptop' ? 234 : 326,
62
+ y: 70 + (index + .5) * 290 / keys.length,
63
+ index,
64
+ }])));
65
+ };
66
+ const path = (from, to) => {
67
+ if (from.x !== to.x) {
68
+ const middle = (from.x + to.x) / 2;
69
+ return { d: `M${from.x} ${from.y}C${middle} ${from.y} ${middle} ${to.y} ${to.x} ${to.y}`, x: middle, y: (from.y + to.y) / 2 };
70
+ }
71
+ const side = from.x < 280 ? 1 : -1;
72
+ if (Math.abs(from.index - to.index) === 1) return { d: `M${from.x} ${from.y}V${to.y}`, x: from.x + side * 46, y: (from.y + to.y) / 2 };
73
+ const bow = from.x + side * 56;
74
+ return { d: `M${from.x} ${from.y}C${bow} ${from.y} ${bow} ${to.y} ${to.x} ${to.y}`, x: from.x + side * 86, y: (from.y + to.y) / 2 };
75
+ };
76
+
77
+ const build = fixed => {
78
+ const figure = document.createElement('figure');
79
+ figure.className = `dm-scene ${fixed ? 'dm-static' : 'dm-live'}`;
80
+ figure.setAttribute('role', 'img');
81
+ figure.innerHTML = `${fixed ? '' : '<div class="dm-stepper"></div>'}<div class="dm-scene-heading"></div><div class="dm-dg"><div class="dm-dg-in">
82
+ <div class="dm-machine dm-laptop"><span class="dm-machine-label">${icon('laptop')}Your laptop</span><span class="dm-machine-foot"></span></div>
83
+ <div class="dm-machine dm-server"><span class="dm-machine-label">${icon('server')}Server</span><span class="dm-machine-foot"></span></div>
84
+ </div></div><figcaption></figcaption>`;
85
+ const canvas = figure.querySelector('.dm-dg-in');
86
+ const lines = svg('svg', { class: 'dm-lines', viewBox: '0 0 560 380', preserveAspectRatio: 'none', 'aria-hidden': 'true' });
87
+ canvas.prepend(lines);
88
+ const nodes = Object.fromEntries(order.map(key => {
89
+ const node = document.createElement('div');
90
+ node.className = `dm-node dm-move ${tones[key]}`;
91
+ node.innerHTML = `<span class="dm-glyph">${icon(icons[key])}</span><span><strong></strong><small></small></span>`;
92
+ canvas.append(node);
93
+ return [key, node];
94
+ }));
95
+ const labels = document.createElement('div');
96
+ canvas.append(labels);
97
+ const show = index => {
98
+ const mode = modes[index];
99
+ const spots = layout(mode);
100
+ figure.querySelector('.dm-scene-heading').textContent = mode.heading;
101
+ figure.querySelector('figcaption').textContent = mode.caption;
102
+ figure.setAttribute('aria-label', `${mode.heading}. ${mode.caption}`);
103
+ figure.querySelectorAll('.dm-machine').forEach(machine => {
104
+ const idle = machine.classList.contains(`dm-${mode.idle}`);
105
+ machine.classList.toggle('dm-idle', idle);
106
+ machine.querySelector('.dm-machine-foot').textContent = idle ? 'not needed' : '';
107
+ });
108
+ order.forEach(key => {
109
+ const node = nodes[key];
110
+ const item = mode.items[key];
111
+ node.classList.toggle('dm-gone', !item);
112
+ if (!item) return;
113
+ node.classList.toggle('dm-left', item[0] === 'laptop');
114
+ node.style.setProperty('--x', spots[key].x);
115
+ node.style.setProperty('--y', spots[key].y);
116
+ node.querySelector('strong').textContent = item[1];
117
+ node.querySelector('small').textContent = item[2];
118
+ node.querySelector('use').setAttribute('href', `#dm-i-${key === 'ui' && item[1] === 'VS Code' ? 'laptop' : icons[key]}`);
119
+ });
120
+ lines.replaceChildren(...mode.links.map(([from, to]) => svg('path', { class: 'dm-ln dm-flow', d: path(spots[from], spots[to]).d })));
121
+ labels.replaceChildren(...mode.links.filter(link => link[2]).map(([from, to, text]) => {
122
+ const spot = path(spots[from], spots[to]);
123
+ const label = document.createElement('span');
124
+ label.className = 'dm-lbl';
125
+ label.style.setProperty('--x', spot.x);
126
+ label.style.setProperty('--y', spot.y);
127
+ label.textContent = text;
128
+ return label;
129
+ }));
130
+ };
131
+ return { figure, show };
132
+ };
133
+
134
+ const live = build(false);
135
+ stage.append(live.figure);
136
+ const stepper = live.figure.querySelector('.dm-stepper');
137
+ const buttons = modes.map((mode, index) => {
138
+ const button = document.createElement('button');
139
+ button.type = 'button';
140
+ button.textContent = mode.step;
141
+ button.addEventListener('click', () => {
142
+ const step = steps[index];
143
+ const top = step.getBoundingClientRect().top + scrollY + step.offsetHeight / 2 - innerHeight / 2;
144
+ scrollTo({ top, behavior: matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth' });
145
+ });
146
+ return button;
147
+ });
148
+ stepper.append(...buttons);
149
+ const copies = modes.map((_mode, index) => {
150
+ const copy = build(true);
151
+ copy.show(index);
152
+ copy.figure.style.setProperty('--i', index);
153
+ stage.append(copy.figure);
154
+ return copy.figure;
155
+ });
156
+ let active = 0;
157
+ const select = index => {
158
+ active = index;
159
+ live.show(index);
160
+ buttons.forEach((button, position) => {
161
+ if (position === index) button.setAttribute('aria-current', 'step');
162
+ else button.removeAttribute('aria-current');
163
+ });
164
+ };
165
+ select(0);
166
+ requestAnimationFrame(() => live.figure.classList.add('dm-ready'));
167
+
168
+ const release = () => {
169
+ story.removeAttribute('data-pinned');
170
+ story.style.removeProperty('--dm-stage-h');
171
+ };
172
+ const pin = () => {
173
+ story.setAttribute('data-pinned', '');
174
+ const height = live.figure.offsetHeight;
175
+ if (height > innerHeight - header.offsetHeight - 72) return release();
176
+ story.style.setProperty('--dm-stage-h', `${Math.ceil(height)}px`);
177
+ select(active);
178
+ };
179
+
180
+ gsap.matchMedia().add('screen and (min-width: 960px)', () => {
181
+ pin();
182
+ ScrollTrigger.addEventListener('refreshInit', pin);
183
+ steps.forEach((step, index) => ScrollTrigger.create({
184
+ trigger: step, start: 'top 50%', end: 'bottom 50%',
185
+ onToggle: self => self.isActive && story.hasAttribute('data-pinned') && select(index)
186
+ }));
187
+ return () => {
188
+ ScrollTrigger.removeEventListener('refreshInit', pin);
189
+ release();
190
+ };
191
+ });
192
+
193
+ const ticker = list => {
194
+ const lines = [...list.children].map(item => item.textContent);
195
+ const element = document.createElement('div');
196
+ element.className = 'story-ticker';
197
+ element.setAttribute('aria-hidden', 'true');
198
+ element.innerHTML = `<p></p><span>${lines.map(() => '<i></i>').join('')}</span>`;
199
+ const text = element.querySelector('p');
200
+ const dots = [...element.querySelectorAll('i')];
201
+ let shown = -1;
202
+ const show = progress => {
203
+ const index = Math.min(lines.length - 1, Math.floor(progress * lines.length));
204
+ if (index === shown) return;
205
+ shown = index;
206
+ text.textContent = lines[index];
207
+ dots.forEach((dot, position) => dot.classList.toggle('on', position === index));
208
+ };
209
+ show(0);
210
+ return { element, show };
211
+ };
212
+
213
+ gsap.matchMedia().add('screen and (max-width: 959.98px) and (prefers-reduced-motion: no-preference)', () => {
214
+ const bars = [header, document.querySelector('.subnav')].filter(Boolean);
215
+ const items = copies.map((figure, index) => {
216
+ const step = steps[index];
217
+ const track = document.createElement('div');
218
+ const stick = document.createElement('div');
219
+ const bullets = ticker(step.querySelector('.feature-benefits'));
220
+ track.className = 'story-scene-track dm-track';
221
+ stick.className = 'story-stick';
222
+ stick.append(figure, bullets.element);
223
+ track.append(stick);
224
+ step.querySelector('h3').after(track);
225
+ return { track, stick, bullets };
226
+ });
227
+ const probe = document.createElement('div');
228
+ probe.style.cssText = 'position: fixed; top: 0; height: 100svh; visibility: hidden; pointer-events: none;';
229
+ document.body.append(probe);
230
+ const plan = ({ stick }) => {
231
+ const inset = bars.reduce((sum, bar) => sum + bar.offsetHeight, 0);
232
+ const room = probe.offsetHeight - inset;
233
+ const height = stick.offsetHeight;
234
+ const run = height + 16 <= room ? Math.round(1.6 * room) : 0;
235
+ return { top: Math.round(inset + Math.max(8, (room - height) / 2)), height, run };
236
+ };
237
+ const arrange = () => document.documentElement.hasAttribute('data-menu-open') || items.forEach(item => {
238
+ const { top, height, run } = plan(item);
239
+ item.stick.style.setProperty('--scene-top', `${top}px`);
240
+ item.track.style.height = run > 0 ? `${Math.ceil(height + run)}px` : '';
241
+ });
242
+ arrange();
243
+ ScrollTrigger.addEventListener('refreshInit', arrange);
244
+ items.forEach(item => ScrollTrigger.create({
245
+ invalidateOnRefresh: true,
246
+ start: () => item.track.getBoundingClientRect().top + scrollY - plan(item).top,
247
+ end: () => item.track.getBoundingClientRect().top + scrollY - plan(item).top + Math.max(1, plan(item).run),
248
+ onUpdate: self => item.bullets.show(self.progress)
249
+ }));
250
+ ScrollTrigger.refresh();
251
+ return () => {
252
+ probe.remove();
253
+ ScrollTrigger.removeEventListener('refreshInit', arrange);
254
+ items.forEach(({ track, bullets }, index) => {
255
+ bullets.element.remove();
256
+ stage.append(copies[index]);
257
+ track.remove();
258
+ });
259
+ };
260
+ });
261
+ })();
@@ -0,0 +1,30 @@
1
+ (() => {
2
+ const { gsap, ScrollTrigger } = window;
3
+ if (!gsap || !ScrollTrigger || matchMedia('(prefers-reduced-motion: reduce)').matches) return;
4
+ const scrub = panel => ({ trigger: panel, start: 'top 95%', end: 'center 70%', scrub: true });
5
+ const at = element => {
6
+ const style = getComputedStyle(element);
7
+ return { x: Number(style.getPropertyValue('--x')), y: Number(style.getPropertyValue('--y')) };
8
+ };
9
+ const burst = (tl, elements, origin, from, start, gap) => elements.forEach((element, index) => {
10
+ const { x, y } = at(element);
11
+ tl.fromTo(element, { '--dx': origin.x - x, '--dy': origin.y - y, '--s': from, autoAlpha: 0 }, { '--dx': 0, '--dy': 0, '--s': 1, autoAlpha: 1, duration: 1, ease: 'power2.out' }, start + index * gap);
12
+ });
13
+ const lines = (tl, panel) => tl.fromTo(panel.querySelectorAll('[data-pa-line]'), { opacity: 0 }, { opacity: .45, duration: .6, stagger: .15, ease: 'none' }, 0);
14
+
15
+ const plugin = document.querySelector('[data-pa="plugin"]');
16
+ if (plugin) {
17
+ const tl = gsap.timeline({ scrollTrigger: scrub(plugin) });
18
+ lines(tl, plugin);
19
+ burst(tl, plugin.querySelectorAll('[data-pa-token]'), { x: 166, y: 150 }, .3, .2, .2);
20
+ tl.fromTo(plugin.querySelector('[data-pa-off]'), { '--dx': -170, '--dy': 51 }, { '--dx': 0, '--dy': 0, duration: 1.4, ease: 'power1.inOut' }, 1);
21
+ tl.fromTo(plugin.querySelectorAll('.pa-eject, .pa-eject-tip, .pa-shadow'), { autoAlpha: 0 }, { autoAlpha: 1, duration: .6, ease: 'none' }, 1.8);
22
+ }
23
+
24
+ const profile = document.querySelector('[data-pa="profile"]');
25
+ if (profile) {
26
+ const tl = gsap.timeline({ scrollTrigger: scrub(profile) });
27
+ lines(tl, profile);
28
+ burst(tl, profile.querySelectorAll('[data-pp-copy]'), { x: 156, y: 160 }, 1.3, .3, .3);
29
+ }
30
+ })();
@@ -0,0 +1,368 @@
1
+ (() => {
2
+ const { gsap, ScrollTrigger } = window;
3
+ const story = document.querySelector('.feature-story');
4
+ const W = 540;
5
+ const H = 520;
6
+
7
+ const place = (element, point) => {
8
+ element.style.left = `${point.x / W * 100}%`;
9
+ element.style.top = `${point.y / H * 100}%`;
10
+ };
11
+ const travel = (tl, packet, path, at, { duration = 1, reverse = false, from = 0, to = 1 } = {}) => {
12
+ const length = path.getTotalLength();
13
+ const state = { t: 0 };
14
+ tl.to(state, {
15
+ t: 1, duration, ease: 'power1.inOut',
16
+ onUpdate: () => {
17
+ const share = from + (to - from) * (reverse ? 1 - state.t : state.t);
18
+ place(packet, path.getPointAtLength(share * length));
19
+ packet.style.opacity = state.t > 0 && state.t < 1 ? 1 : 0;
20
+ }
21
+ }, at);
22
+ };
23
+ const pop = (tl, targets, at, { stagger = .12, duration = .45 } = {}) => {
24
+ [targets].flat().forEach((target, index) => {
25
+ tl.fromTo(target, { autoAlpha: 0, scale: .6 }, { autoAlpha: 1, scale: 1, duration, ease: 'power2.out' }, at + index * stagger);
26
+ });
27
+ };
28
+ const draw = (tl, paths, at, duration = .7, ease = 'power1.inOut') => tl.fromTo(paths, { strokeDashoffset: 1 }, { strokeDashoffset: 0, duration, ease, stagger: .15 }, at);
29
+ const clock = (tl, total, apply) => {
30
+ const state = { t: 0 };
31
+ apply(0);
32
+ tl.to(state, { t: total, duration: total, ease: 'none', onUpdate: () => apply(state.t) }, 0);
33
+ };
34
+ const clamp = value => Math.max(0, Math.min(1, value));
35
+ const smooth = share => share * share * (3 - 2 * share);
36
+ const within = (time, from, to) => time >= from && time < to;
37
+ const blink = (art, time) => art.querySelectorAll('.think').forEach(think => {
38
+ [...think.children].forEach((dot, index) => dot.classList.toggle('on', Math.floor(time * 6) % 3 === index));
39
+ });
40
+ const onPath = (path, share) => path.getPointAtLength(path.getTotalLength() * share);
41
+ const center = (canvas, element) => {
42
+ const box = canvas.getBoundingClientRect();
43
+ const rect = element.getBoundingClientRect();
44
+ return { x: (rect.left + rect.width / 2 - box.left) / box.width * W, y: (rect.top + rect.height / 2 - box.top) / box.height * H };
45
+ };
46
+
47
+ const scenes = {
48
+ setups: (art, tl) => {
49
+ const part = name => [...art.querySelectorAll(`[data-su="${name}"]`)];
50
+ const [paths, faints, ghosts, labels, pieces] = ['path', 'faint', 'ghost', 'label', 'piece'].map(part);
51
+ const flight = index => .6 + index * 1.9;
52
+ const trip = 1.4;
53
+ const total = flight(pieces.length - 1) + trip + 1.8;
54
+ clock(tl, total, time => {
55
+ pieces.forEach((piece, index) => {
56
+ const share = smooth(clamp((time - flight(index)) / trip));
57
+ [faints[index], ghosts[index]].forEach(element => { element.style.opacity = 0; });
58
+ labels[index].style.opacity = clamp((share - .75) / .25);
59
+ paths[index].style.strokeDashoffset = 1 - share;
60
+ piece.style.opacity = share > 0 ? 1 : 0;
61
+ piece.style.scale = .35 + .65 * share;
62
+ place(piece, onPath(paths[index], share));
63
+ });
64
+ part('setup')[0].classList.toggle('halo', pieces.some((_, index) => within(time, flight(index), flight(index) + trip)));
65
+ const built = flight(pieces.length - 1) + trip;
66
+ part('frame')[0].classList.toggle('built', time >= built);
67
+ });
68
+ },
69
+
70
+ agents: (art, tl) => {
71
+ const part = name => art.querySelector(`[data-n="${name}"]`);
72
+ const edge = (from, to) => art.querySelector(`[data-n-edge="${from} ${to}"]`) || art.querySelector(`[data-n-edge="${to} ${from}"]`);
73
+ const mails = [...art.querySelectorAll('[data-n-mail]')];
74
+ const kinds = { you: 'person', a1: 'agent', a2: 'agent', s1: 'script', s2: 'script', m1: 'app', m2: 'app' };
75
+ const slots = [
76
+ [['you', 'a1']],
77
+ [['a1', 'a2'], ['a1', 's1'], ['you', 'm2']],
78
+ [['a2', 's2'], ['s1', 'm1'], ['m2', 'a2']],
79
+ [['s2', 's1'], ['m1', 'you'], ['a1', 'm1']],
80
+ [['s2', 'm2'], ['a2', 'you']]
81
+ ];
82
+ const trip = 1;
83
+ const trips = slots.flatMap((pairs, slot) => pairs.map(([from, to], lane) => ({ from, to, lane, start: .4 + slot * 1.25 + lane * .2 })));
84
+ const total = Math.max(...trips.map(({ start }) => start)) + trip + .6;
85
+ clock(tl, total, time => {
86
+ const active = trips.filter(({ start }) => within(time, start, start + trip + .3));
87
+ trips.forEach(({ from, to, start }) => {
88
+ const path = edge(from, to);
89
+ const share = smooth(clamp((time - start) / trip));
90
+ path.style.strokeDashoffset = path.dataset.nEdge === `${from} ${to}` ? 1 - share : share - 1;
91
+ });
92
+ mails.forEach((mail, lane) => {
93
+ const current = active.find(item => item.lane === lane);
94
+ const share = current ? smooth(clamp((time - current.start) / trip)) : 0;
95
+ mail.style.opacity = share > 0 && share < 1 ? 1 : 0;
96
+ if (!current) return;
97
+ const path = edge(current.from, current.to);
98
+ mail.dataset.from = kinds[current.from];
99
+ place(mail, onPath(path, path.dataset.nEdge === `${current.from} ${current.to}` ? share : 1 - share));
100
+ });
101
+ Object.keys(kinds).forEach(name => part(name).classList.toggle('halo', active.some(({ from, to }) => from === name || to === name)));
102
+ });
103
+ },
104
+
105
+ ui: (art, tl) => {
106
+ const part = name => art.querySelector(`[data-u="${name}"]`);
107
+ const canvas = art.querySelector('.art-canvas');
108
+ const rows = [...art.querySelectorAll('[data-u-row]')];
109
+ const boxes = rows.map(row => row.querySelector('.u-box'));
110
+ const agent = part('agent');
111
+ const homes = { agent: agent.querySelector('.u-face'), you: art.querySelector('.u-actor.person .u-face') };
112
+ const T = { built: 2.9, tick1: 4.4, tick2: 7, press: 8.2, heard: 9.4, answer: 10.4, tick3: 11.5, end: 13 };
113
+ const visits = {
114
+ agent: [[[3, null], [4.2, boxes[0]], [4.7, boxes[0]], [5.6, null]], [[T.answer, null], [11.3, boxes[2]], [11.8, boxes[2]], [12.7, null]]],
115
+ you: [[[5.8, null], [6.8, boxes[1]], [7.3, boxes[1]], [8, part('go')], [8.5, part('go')], [9.3, null]]]
116
+ };
117
+ const follow = (pointer, name, time) => {
118
+ const visit = visits[name].find(keys => within(time, keys[0][0], keys[keys.length - 1][0]));
119
+ pointer.style.opacity = visit ? Math.min(clamp((time - visit[0][0]) / .3), clamp((visit[visit.length - 1][0] - time) / .3)) : 0;
120
+ if (!visit) return;
121
+ const index = visit.reduce((found, [mark], position) => time >= mark ? position : found, 0);
122
+ const [from, a] = visit[index];
123
+ const [to, b] = visit[Math.min(index + 1, visit.length - 1)];
124
+ const start = center(canvas, a || homes[name]);
125
+ const end = center(canvas, b || homes[name]);
126
+ const share = to > from ? smooth(clamp((time - from) / (to - from))) : 0;
127
+ place(pointer, { x: start.x + (end.x - start.x) * share, y: start.y + (end.y - start.y) * share });
128
+ };
129
+ tl.fromTo(part('note'), { autoAlpha: 0 }, { autoAlpha: 1, duration: .5 }, .3);
130
+ draw(tl, part('outline'), .3, 1.1, 'none');
131
+ tl.fromTo(part('panel'), { autoAlpha: 0 }, { autoAlpha: 1, duration: .4, ease: 'none' }, 1.3);
132
+ tl.to(part('outline'), { opacity: 0, duration: .3, ease: 'none' }, 1.6);
133
+ const [bar, foot] = art.querySelectorAll('[data-u-part]');
134
+ [bar, ...rows, foot].forEach((element, index) => {
135
+ tl.fromTo(element, { autoAlpha: 0, y: 6 }, { autoAlpha: 1, y: 0, duration: .35 }, 1.5 + index * .28);
136
+ });
137
+ draw(tl, part('wire'), T.press + .1, T.heard - T.press - .1, 'power1.inOut');
138
+ travel(tl, part('packet'), part('wire'), T.press + .1, { duration: T.heard - T.press - .1 });
139
+ tl.to(part('wire'), { opacity: 0, duration: .5, ease: 'none' }, T.answer);
140
+ clock(tl, T.end, time => {
141
+ const owners = [time >= T.tick1 ? 'agent' : '', time >= T.tick2 ? 'you' : '', time >= T.tick3 ? 'agent' : ''];
142
+ rows.forEach((row, index) => {
143
+ if (owners[index]) row.dataset.by = owners[index];
144
+ else delete row.dataset.by;
145
+ row.classList.toggle('flash', within(time, [T.tick1, T.tick2, T.tick3][index], [T.tick1, T.tick2, T.tick3][index] + .6));
146
+ });
147
+ part('count').textContent = `${owners.filter(Boolean).length} / 3`;
148
+ part('go').classList.toggle('pressed', Math.abs(time - T.press) < .15);
149
+ agent.classList.toggle('thinking', within(time, .3, T.built) || within(time, T.heard, T.answer));
150
+ blink(art, time);
151
+ follow(part('ptr-agent'), 'agent', time);
152
+ follow(part('ptr-you'), 'you', time);
153
+ });
154
+ },
155
+
156
+ typescript: (art, tl) => {
157
+ const tabs = [...art.querySelectorAll('[data-tsx-tab]')];
158
+ const panes = [...art.querySelectorAll('[data-tsx-pane]')];
159
+ const press = art.querySelector('[data-tsx-press]');
160
+ const at = index => .4 + index * 2;
161
+ const current = time => panes.reduce((found, _pane, index) => time >= at(index) - .4 ? index : found, 0);
162
+ tl.set(panes.slice(1), { autoAlpha: 0 }, 0);
163
+ panes.slice(1).forEach((pane, offset) => {
164
+ tl.to(panes[offset], { autoAlpha: 0, duration: .15, ease: 'none' }, at(offset + 1) - .35);
165
+ tl.fromTo(pane, { autoAlpha: 0, y: 8 }, { autoAlpha: 1, y: 0, duration: .4 }, at(offset + 1) - .2);
166
+ });
167
+ tl.to(press, { scale: .9, duration: .2, yoyo: true, repeat: 1, ease: 'power1.inOut' }, at(2) + 1);
168
+ clock(tl, at(3) + 1.2, time => {
169
+ const index = current(time);
170
+ tabs.forEach((tab, position) => tab.classList.toggle('on', position === index));
171
+ panes[1].classList.toggle('fixed', time >= at(1) + 1.1);
172
+ });
173
+ },
174
+
175
+ events: (art, tl) => {
176
+ const rows = [...art.querySelectorAll('[data-j-row]')];
177
+ const list = art.querySelector('[data-j-list]');
178
+ const foot = art.querySelector('[data-j-foot]');
179
+ const first = 3;
180
+ let shown = -1;
181
+ clock(tl, rows.length - first + 1, time => {
182
+ const count = Math.min(rows.length, first + Math.floor(time));
183
+ if (count === shown) return;
184
+ shown = count;
185
+ rows.forEach((row, index) => {
186
+ row.classList.toggle('on', index < count);
187
+ row.classList.toggle('jr-lit', index === count - 1 && row.classList.contains('jr-flash'));
188
+ });
189
+ const hidden = rows.slice(count).reduce((sum, row) => sum + row.offsetHeight, 0);
190
+ list.style.transform = `translateY(${hidden}px)`;
191
+ const note = rows.slice(0, count).reverse().find(row => row.dataset.jNote);
192
+ foot.innerHTML = note ? note.dataset.jNote : '';
193
+ });
194
+ },
195
+
196
+ workflows: (art, tl) => {
197
+ const cards = [...art.querySelectorAll('[data-wf-card]')];
198
+ const edge = name => art.querySelector(`[data-wf="${name}"]`);
199
+ const packet = art.querySelector('[data-packet]');
200
+ const round = art.querySelector('[data-wf-round]');
201
+ const [notes, approved, merged] = ['notes', 'ok', 'merged'].map(name => art.querySelector(`[data-wf-${name}]`));
202
+ const [opened, tests, review, fix, merge] = cards;
203
+ const hops = [['open', .3], ['test', 1.5], ['fix', 3.1], ['retest', 4.3], ['test', 5.5], ['merge', 7.1]];
204
+ const visits = [[opened, 0, .4], [tests, 1.1, 1.6], [review, 2.3, 3.1], [fix, 3.9, 4.3], [tests, 5.1, 5.5], [review, 6.3, 7.1], [merge, 7.9, 8.6]];
205
+ tl.set([notes, approved, merged], { autoAlpha: 0 }, 0);
206
+ hops.forEach(([name, at]) => travel(tl, packet, edge(name), at, { duration: .8 }));
207
+ pop(tl, notes, 2.8);
208
+ tl.to(notes, { autoAlpha: 0, duration: .2 }, 5.5);
209
+ pop(tl, approved, 6.8);
210
+ pop(tl, merged, 8.2);
211
+ clock(tl, 8.8, time => {
212
+ cards.forEach(card => card.classList.toggle('halo', visits.some(([target, from, to]) => target === card && time >= from && time < to)));
213
+ round.textContent = `round ${time >= 4.9 ? 2 : 1} of max 3`;
214
+ });
215
+ },
216
+
217
+ distributed: (art, tl) => {
218
+ const part = name => art.querySelector(`[data-d="${name}"]`);
219
+ const link = key => art.querySelector(`[data-d-link="${key}"]`);
220
+ const run = key => art.querySelector(`[data-d-run="${key}"]`);
221
+ const runs = { l1: 'a', l2: 'b', web: 'c' };
222
+ const lanes = { l1: 0, l2: .9, web: 1.8 };
223
+ const T = { live: 2.4, think: 4.6, task: 5.2, arrive: 6.4, result: 8.6, back: 9.8, quiet: 13, end: 13.6 };
224
+ const period = 3;
225
+ const cycle = { send: 1, think: .6 };
226
+ const busy = [T.think, T.back];
227
+ const show = (element, key, share, visible) => {
228
+ element.style.opacity = visible ? 1 : 0;
229
+ if (visible) place(element, onPath(link(key), share));
230
+ };
231
+ pop(tl, [...art.querySelectorAll('[data-d-run]')], .3, { stagger: .3 });
232
+ [...art.querySelectorAll('[data-d-client]')].forEach((client, index) => {
233
+ tl.fromTo([client, art.querySelectorAll('.d-link')[index]], { autoAlpha: 0 }, { autoAlpha: 1, duration: .5, ease: 'none' }, 1.3 + index * .3);
234
+ });
235
+ clock(tl, T.end, time => {
236
+ const thinking = new Set();
237
+ Object.keys(runs).forEach(key => {
238
+ const round = Math.floor((time - T.live - lanes[key]) / period);
239
+ const begin = T.live + lanes[key] + round * period;
240
+ const local = time - begin;
241
+ const ends = begin + cycle.send * 2 + cycle.think;
242
+ const allowed = round >= 0 && ends <= T.quiet && !(key === 'l1' && ends > busy[0] && begin < busy[1]);
243
+ const up = local / cycle.send;
244
+ const down = (local - cycle.send - cycle.think) / cycle.send;
245
+ show(art.querySelector(`[data-d-up="${key}"]`), key, smooth(clamp(up)), allowed && up > 0 && up < 1);
246
+ show(art.querySelector(`[data-d-down="${key}"]`), key, 1 - smooth(clamp(down)), allowed && down > 0 && down < 1);
247
+ if (allowed && up >= 1 && down <= 0) thinking.add(runs[key]);
248
+ });
249
+ if (within(time, T.think, T.task)) thinking.add('a');
250
+ ['a', 'b', 'c'].forEach(key => run(key).classList.toggle('thinking', thinking.has(key)));
251
+ part('models').classList.toggle('halo', thinking.size > 0);
252
+ const task = (time - T.task) / (T.arrive - T.task);
253
+ const result = (time - T.result) / (T.back - T.result);
254
+ show(part('task'), 'l1', 1 - smooth(clamp(task)), task > 0 && task < 1);
255
+ show(part('result'), 'l1', smooth(clamp(result)), result > 0 && result < 1);
256
+ art.querySelector('[data-d-client="l1"]').classList.toggle('busy', within(time, T.arrive, T.result));
257
+ art.querySelector('[data-d-client="l1"]').classList.toggle('halo', within(time, T.arrive, T.result));
258
+ part('tools').style.opacity = clamp((time - T.arrive + .3) / .3) * clamp((T.back + .6 - time) / .4);
259
+ part('work').style.setProperty('--done', clamp((time - T.arrive) / (T.result - T.arrive - .3)));
260
+ run('a').classList.toggle('done', time >= T.back);
261
+ blink(art, time);
262
+ });
263
+ }
264
+ };
265
+
266
+ const absoluteTop = element => element.getBoundingClientRect().top + scrollY;
267
+ const timelines = Object.entries(scenes).map(([name, build]) => {
268
+ const art = story.querySelector(`[data-art="${name}"]`);
269
+ const tl = gsap.timeline({ paused: true, defaults: { ease: 'power2.out', lazy: false } });
270
+ build(art, tl);
271
+ return { name, art, tl };
272
+ });
273
+
274
+ const ticker = list => {
275
+ const lines = [...list.children].map(item => item.textContent);
276
+ const element = document.createElement('div');
277
+ element.className = 'story-ticker';
278
+ element.setAttribute('aria-hidden', 'true');
279
+ element.innerHTML = `<p></p><span>${lines.map(() => '<i></i>').join('')}</span>`;
280
+ const text = element.querySelector('p');
281
+ const dots = [...element.querySelectorAll('i')];
282
+ let shown = -1;
283
+ const show = progress => {
284
+ const index = Math.min(lines.length - 1, Math.floor(progress * lines.length));
285
+ if (index === shown) return;
286
+ shown = index;
287
+ text.textContent = lines[index];
288
+ dots.forEach((dot, position) => dot.classList.toggle('on', position === index));
289
+ };
290
+ show(0);
291
+ return { element, show };
292
+ };
293
+
294
+ const media = gsap.matchMedia();
295
+ media.add({ motion: '(prefers-reduced-motion: no-preference)', wide: '(min-width: 960px)' }, context => {
296
+ if (!context.conditions.motion) return;
297
+ const { wide } = context.conditions;
298
+ const bars = [document.querySelector('.masthead'), document.querySelector('.subnav')].filter(Boolean);
299
+ const runs = { setups: 2.4, agents: 2, ui: 3, typescript: 2, events: 2.6, workflows: 2.2, distributed: 2.8 };
300
+ const items = timelines.map(({ name, art, tl }, index) => {
301
+ const scene = art.closest('.story-scene');
302
+ const step = document.getElementById(name);
303
+ const mark = document.createComment('');
304
+ const track = document.createElement('div');
305
+ const stick = document.createElement('div');
306
+ const bullets = ticker(step.querySelector('.feature-benefits'));
307
+ track.className = 'story-scene-track';
308
+ stick.className = 'story-stick';
309
+ track.style.setProperty('--story-index', index);
310
+ scene.before(mark);
311
+ if (wide) mark.before(track);
312
+ else step.querySelector('h3').after(track);
313
+ stick.append(scene, bullets.element);
314
+ track.append(stick);
315
+ return { name, tl, scene, step, mark, track, stick, bullets };
316
+ });
317
+ const probe = document.createElement('div');
318
+ probe.style.cssText = 'position: fixed; top: 0; height: 100svh; visibility: hidden; pointer-events: none;';
319
+ document.body.append(probe);
320
+ const plan = ({ name, stick }) => {
321
+ const inset = bars.reduce((sum, bar) => sum + bar.offsetHeight, 0);
322
+ const view = probe.offsetHeight;
323
+ const room = view - inset;
324
+ const height = stick.offsetHeight;
325
+ const run = height + 16 <= room ? Math.round(runs[name] * view) : 0;
326
+ return { inset, room, top: Math.round(inset + Math.max(8, (room - height) / 2)), height, run };
327
+ };
328
+ const arrange = () => document.documentElement.hasAttribute('data-menu-open') || items.forEach(item => {
329
+ const { inset, room, top, height, run } = plan(item);
330
+ const copy = item.step.querySelector('.feature-copy');
331
+ item.stick.style.setProperty('--scene-top', `${top}px`);
332
+ if (wide) item.step.style.setProperty('--copy-top', `${Math.round(inset + Math.max(8, (room - copy.offsetHeight) / 2))}px`);
333
+ item.track.style.height = run > 0 ? `${Math.ceil(height + run)}px` : '';
334
+ });
335
+ const start = item => {
336
+ const { top, run } = plan(item);
337
+ return run > 0 ? absoluteTop(item.track) - top : absoluteTop(item.track) - innerHeight * .85;
338
+ };
339
+ const end = item => {
340
+ const { run } = plan(item);
341
+ return run > 0 ? start(item) + run : absoluteTop(item.track) + item.stick.offsetHeight * .7 - innerHeight * .5;
342
+ };
343
+ const resized = new ResizeObserver(() => ScrollTrigger.refresh());
344
+ arrange();
345
+ ScrollTrigger.addEventListener('refreshInit', arrange);
346
+ items.forEach(item => {
347
+ resized.observe(item.stick);
348
+ ScrollTrigger.create({
349
+ animation: item.tl, scrub: true, invalidateOnRefresh: true, start: () => start(item), end: () => end(item),
350
+ onUpdate: self => item.bullets.show(self.progress)
351
+ });
352
+ });
353
+ return () => {
354
+ probe.remove();
355
+ resized.disconnect();
356
+ ScrollTrigger.removeEventListener('refreshInit', arrange);
357
+ items.forEach(({ scene, step, mark, track, bullets }) => {
358
+ step.style.removeProperty('--copy-top');
359
+ mark.replaceWith(scene);
360
+ bullets.element.remove();
361
+ track.remove();
362
+ });
363
+ };
364
+ });
365
+ media.add('(prefers-reduced-motion: reduce)', () => {
366
+ timelines.forEach(({ tl }) => tl.progress(1));
367
+ });
368
+ })();