@schlenkr/ragents 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1052) hide show
  1. package/README.md +19 -11
  2. package/apps/server/package.json +8 -6
  3. package/apps/server/src/access-projection.ts +3 -3
  4. package/apps/server/src/access-service.ts +19 -8
  5. package/apps/server/src/access-session.ts +6 -2
  6. package/apps/server/src/api/contracts.ts +19 -18
  7. package/apps/server/src/api/core-methods.ts +45 -26
  8. package/apps/server/src/api/delivery.ts +4 -4
  9. package/apps/server/src/api/reference.ts +1 -1
  10. package/apps/server/src/api/rights.ts +86 -7
  11. package/apps/server/src/chat-context.ts +1 -1
  12. package/apps/server/src/chat-handler.ts +14 -7
  13. package/apps/server/src/config-file.ts +25 -6
  14. package/apps/server/src/config.ts +4 -4
  15. package/apps/server/src/data-directory.ts +1 -1
  16. package/apps/server/src/folder-install.ts +115 -0
  17. package/apps/server/src/host-api.json +1256 -0
  18. package/apps/server/src/host-api.ts +190 -0
  19. package/apps/server/src/host-resolution-hooks.mjs +50 -1
  20. package/apps/server/src/host-resolution.ts +26 -1
  21. package/apps/server/src/host-version.ts +41 -0
  22. package/apps/server/src/host-web.ts +59 -0
  23. package/apps/server/src/layout.ts +1 -1
  24. package/apps/server/src/main.ts +3 -2
  25. package/apps/server/src/missing-environment.ts +47 -0
  26. package/apps/server/src/parent-watch.ts +37 -0
  27. package/apps/server/src/plugin-build/build.ts +650 -0
  28. package/apps/server/src/plugin-build/host-api-names.ts +185 -0
  29. package/apps/server/src/plugin-build/plugin-description.ts +118 -0
  30. package/apps/server/src/plugin-build/typecheck.ts +66 -0
  31. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/app-project.ts +16 -15
  32. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-compiler.ts +4 -4
  33. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-contracts.ts +4 -4
  34. package/apps/server/src/plugin-support/actor-programs/client-runtime.ts +27 -0
  35. package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/contract.ts +3 -3
  36. package/apps/server/src/plugin-support/actor-programs/service.ts +1 -1
  37. package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/tailwind.ts +2 -3
  38. package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/index.ts +48 -48
  39. package/apps/server/src/plugin-support/agent-tool.ts +10 -5
  40. package/apps/server/src/plugin-support/http.ts +1 -1
  41. package/apps/server/src/plugin-support/language-server/contract.ts +37 -6
  42. package/apps/server/src/plugin-support/language-server/plugin.ts +18 -8
  43. package/apps/server/src/plugin-support/language-server/snapshot-method.ts +32 -7
  44. package/apps/server/src/plugin-support/language-server/tools.ts +59 -15
  45. package/apps/server/src/plugin-support/model-aliases.ts +77 -0
  46. package/apps/server/src/plugin-support/model-choice.ts +17 -7
  47. package/apps/server/src/plugin-support/model-completion.ts +58 -0
  48. package/apps/server/src/plugin-support/model-upstreams.ts +2 -2
  49. package/apps/server/src/plugin-support/native-typescript-executor.ts +10 -7
  50. package/apps/server/src/plugin-support/plugin-config.ts +1 -1
  51. package/apps/server/src/plugin-support/plugin-folder.ts +4 -1
  52. package/apps/server/src/plugin-support/plugin-module.ts +1 -1
  53. package/apps/server/src/plugin-support/plugins-root.ts +6 -10
  54. package/apps/server/src/plugin-support/process-sandbox.ts +312 -0
  55. package/apps/server/src/plugin-support/product-model-settings-contract.ts +14 -5
  56. package/apps/server/src/plugin-support/product-model-settings.ts +10 -9
  57. package/{plugins/ragents.product/server/relay.ts → apps/server/src/plugin-support/product-relay.ts} +2 -2
  58. package/apps/server/src/plugin-support/product-start-options.ts +8 -3
  59. package/apps/server/src/plugin-support/prompt.ts +1 -1
  60. package/apps/server/src/plugin-support/provision.ts +6 -0
  61. package/apps/server/src/plugin-support/run-scripts.ts +16 -2
  62. package/apps/server/src/plugin-support/skills.ts +32 -16
  63. package/apps/server/src/plugin-support/start-entries-contract.ts +12 -3
  64. package/apps/server/src/plugin-support/start-options-contract.ts +5 -1
  65. package/apps/server/src/plugin-support/thinking-level.ts +6 -1
  66. package/apps/server/src/plugin-support/tool-availability.ts +1 -7
  67. package/apps/server/src/plugin-support/workspace-ownership.ts +12 -6
  68. package/apps/server/src/plugin-support/workspace-sandbox-host.ts +184 -37
  69. package/apps/server/src/profile/bundle-manifest.ts +183 -0
  70. package/apps/server/src/profile/compose.ts +19 -10
  71. package/apps/server/src/profile/plugin-discovery.ts +98 -46
  72. package/apps/server/src/profile/provisioning.ts +30 -26
  73. package/apps/server/src/profile-target.ts +3 -0
  74. package/apps/server/src/provider.ts +182 -99
  75. package/apps/server/src/ragents/actor-chat-history.ts +23 -22
  76. package/apps/server/src/ragents/chat-projection.ts +25 -14
  77. package/apps/server/src/ragents/chat-text-positions.ts +4 -4
  78. package/apps/server/src/ragents/coordinator.ts +27 -1
  79. package/apps/server/src/ragents/document-store.ts +1 -1
  80. package/apps/server/src/ragents/engine.ts +69 -36
  81. package/apps/server/src/ragents/global-chat.ts +26 -13
  82. package/apps/server/src/ragents/host-services.ts +15 -6
  83. package/apps/server/src/ragents/journal-chat-events.ts +31 -15
  84. package/apps/server/src/ragents/product-runtime.ts +1 -1
  85. package/apps/server/src/ragents/run-owner.ts +17 -0
  86. package/apps/server/src/ragents/runtime-bridge.ts +1 -1
  87. package/apps/server/src/ragents/session.ts +181 -82
  88. package/apps/server/src/ragents/start-option-state.ts +1 -1
  89. package/apps/server/src/ragents/typescript-tools.ts +35 -27
  90. package/apps/server/src/ragents/workspace-runtime.ts +74 -8
  91. package/apps/server/src/rpc/dispatcher.ts +17 -8
  92. package/apps/server/src/rpc/http-transport.ts +1 -3
  93. package/apps/server/src/rpc/stdio-transport.ts +1 -1
  94. package/apps/server/src/run-preparation-contract.ts +1 -1
  95. package/apps/server/src/run-preparation-input.ts +1 -1
  96. package/apps/server/src/run-preparation.ts +13 -20
  97. package/apps/server/src/run-transfer.ts +2 -2
  98. package/apps/server/src/server.ts +112 -33
  99. package/apps/server/src/settings.ts +7 -8
  100. package/apps/server/src/title-compactor.ts +5 -8
  101. package/apps/server/src/title-settings.ts +3 -3
  102. package/apps/server/src/web-bundles.ts +79 -0
  103. package/apps/server/src/web-stylesheet.ts +85 -0
  104. package/apps/server/tsconfig.json +4 -4
  105. package/apps/server/tsconfig.plugin.json +58 -0
  106. package/apps/web/dist/assets/highlighted-body-KPVGNVTW-B9qYBARS.js +1 -0
  107. package/apps/web/dist/assets/main-BCjvD2Hh.js +6 -0
  108. package/apps/web/dist/assets/mermaid-HWGCJPDP-BPn4aV2r.css +1 -0
  109. package/apps/web/dist/assets/mermaid-HWGCJPDP-CvYYFK_n.js +478 -0
  110. package/apps/web/dist/assets/runPanel-CG7kRMJh.js +21 -0
  111. package/apps/web/dist/help/guide-access.html +199 -0
  112. package/apps/web/dist/help/guide-access.md +84 -0
  113. package/apps/web/dist/help/guide-clients.html +421 -0
  114. package/apps/web/dist/help/guide-clients.md +336 -0
  115. package/apps/web/dist/help/guide-distributed.html +320 -0
  116. package/apps/web/dist/help/guide-distributed.md +225 -0
  117. package/apps/web/dist/help/guide-functions.html +231 -0
  118. package/apps/web/dist/help/guide-functions.md +127 -0
  119. package/apps/web/dist/help/guide-getting-started.html +230 -0
  120. package/apps/web/dist/help/guide-getting-started.md +123 -0
  121. package/apps/web/dist/help/guide-ideas.html +183 -0
  122. package/apps/web/dist/help/guide-ideas.md +71 -0
  123. package/apps/web/dist/help/guide-plugins.html +450 -0
  124. package/apps/web/dist/help/guide-plugins.md +341 -0
  125. package/apps/web/dist/help/guide-programs.html +359 -0
  126. package/apps/web/dist/help/guide-programs.md +271 -0
  127. package/apps/web/dist/help/guide-runtime.html +338 -0
  128. package/apps/web/dist/help/guide-runtime.md +225 -0
  129. package/apps/web/dist/help/guide.html +133 -0
  130. package/apps/web/dist/help/guide.md +13 -0
  131. package/apps/web/dist/help/homepage-bullets.js +12 -0
  132. package/apps/web/dist/help/homepage-distributed.js +261 -0
  133. package/apps/web/dist/help/homepage-plugins.js +30 -0
  134. package/apps/web/dist/help/homepage-scenes.js +368 -0
  135. package/apps/web/dist/help/homepage-stickers.js +69 -0
  136. package/apps/web/dist/help/homepage-story-nav.js +11 -0
  137. package/apps/web/dist/help/homepage-subnav.js +61 -0
  138. package/apps/web/dist/help/homepage.css +833 -0
  139. package/apps/web/dist/help/index.html +1167 -0
  140. package/apps/web/dist/help/mini-app.css +7056 -0
  141. package/apps/web/dist/help/mini-app.html +15 -0
  142. package/apps/web/dist/help/mini-app.js +131 -0
  143. package/apps/web/dist/help/screenshots/release-checklist-vscode.png +0 -0
  144. package/apps/web/dist/help/screenshots/release-checklist-web.png +0 -0
  145. package/apps/web/dist/help/scroll-vendor.js +73 -0
  146. package/apps/web/dist/help/site.css +63 -0
  147. package/apps/web/dist/help/site.js +103 -0
  148. package/apps/web/dist/host-web.json +143 -0
  149. package/apps/web/dist/index.html +15 -0
  150. package/apps/web/dist/run-panel.html +15 -0
  151. package/apps/web/package.json +2 -2
  152. package/apps/web/src/App.tsx +8 -6
  153. package/apps/web/src/Overview.tsx +5 -5
  154. package/apps/web/src/PluginActivation.ts +25 -5
  155. package/apps/web/src/PluginChat.tsx +163 -129
  156. package/apps/web/src/PluginFailureNotice.tsx +15 -0
  157. package/apps/web/src/PluginRegistry.tsx +106 -68
  158. package/apps/web/src/RunPreparationChat.tsx +40 -28
  159. package/apps/web/src/RunStore.ts +2 -2
  160. package/apps/web/src/SettingsModal.tsx +37 -37
  161. package/apps/web/src/StartOptions.tsx +81 -26
  162. package/apps/web/src/StartSelection.tsx +111 -0
  163. package/apps/web/src/StartTiles.tsx +73 -0
  164. package/apps/web/src/{CanvasShortcuts.tsx → SurfaceShortcuts.tsx} +2 -2
  165. package/apps/web/src/ThemeSettings.tsx +1 -1
  166. package/apps/web/src/WorkspacePanel.tsx +4 -4
  167. package/apps/web/src/access-session.ts +4 -1
  168. package/{plugins/ragents.orchestration/web → apps/web/src}/actor-conversation.ts +3 -3
  169. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/DataTable.tsx +9 -9
  170. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FilePicker.tsx +4 -4
  171. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagram.tsx +16 -14
  172. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagramRenderer.tsx +3 -3
  173. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Form.tsx +12 -12
  174. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Layout.tsx +1 -1
  175. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/MessageList.tsx +5 -5
  176. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Viewers.tsx +8 -7
  177. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/WorkflowDiagram.tsx +1 -1
  178. package/apps/web/src/actor-programs/client-ui/chat-contracts.d.ts +64 -0
  179. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/contracts.d.ts +2 -2
  180. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-selection.ts +5 -5
  181. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/index.tsx +22 -16
  182. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/layout-contracts.d.ts +1 -1
  183. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/message-list-contracts.d.ts +2 -2
  184. package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/workflow-diagram-contracts.d.ts +1 -1
  185. package/apps/web/src/api.ts +43 -22
  186. package/apps/web/src/chat/QuasselHost.tsx +12 -0
  187. package/apps/web/src/chat/StoppedActorNotice.tsx +39 -0
  188. package/apps/web/src/chat/chat-target.ts +14 -5
  189. package/apps/web/src/chat/requests.ts +13 -5
  190. package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
  191. package/apps/web/src/chat/useChat.ts +8 -7
  192. package/apps/web/src/chat/user-location.ts +1 -1
  193. package/apps/web/src/chat-view-settings.tsx +49 -0
  194. package/apps/web/src/host-modules.ts +90 -0
  195. package/apps/web/src/language-server/api.ts +24 -0
  196. package/{plugins/ragents.lsp-roslyn/web → apps/web/src/language-server}/language-server-plugin.tsx +133 -6
  197. package/apps/web/src/main.tsx +4 -2
  198. package/apps/web/src/offered-machines.ts +11 -0
  199. package/apps/web/src/panel/ConnectionsPage.tsx +117 -0
  200. package/apps/web/src/panel/LoginForm.tsx +9 -9
  201. package/apps/web/src/panel/PanelDialogs.tsx +44 -27
  202. package/apps/web/src/panel/PanelHeader.tsx +11 -0
  203. package/apps/web/src/panel/PanelPage.tsx +8 -5
  204. package/apps/web/src/panel/RunLine.tsx +48 -0
  205. package/apps/web/src/panel/RunsPage.tsx +84 -0
  206. package/apps/web/src/panel/StartPage.tsx +163 -0
  207. package/apps/web/src/panel/connection-state.ts +40 -0
  208. package/apps/web/src/panel/contract.ts +64 -21
  209. package/apps/web/src/panel/page-props.ts +6 -0
  210. package/apps/web/src/plugin-bootstrap.ts +60 -31
  211. package/{plugins/ragents.product/web → apps/web/src/product}/ModelControl.tsx +3 -3
  212. package/{plugins/ragents.product/web → apps/web/src/product}/ProductModelSettings.tsx +7 -7
  213. package/{plugins/ragents.product/web → apps/web/src/product}/SystemPromptControl.tsx +3 -3
  214. package/{plugins/ragents.product/web → apps/web/src/product}/model-settings.ts +3 -3
  215. package/{plugins/ragents.product/web → apps/web/src/product}/start-options.tsx +2 -2
  216. package/apps/web/src/rpc/client.ts +28 -6
  217. package/apps/web/src/run-panel/RunPanelApp.tsx +334 -0
  218. package/apps/web/src/{column/ColumnRunHeader.tsx → run-panel/RunPanelHeader.tsx} +2 -2
  219. package/apps/web/src/{column/ColumnMenu.tsx → run-panel/RunPanelMenu.tsx} +4 -4
  220. package/apps/web/src/run-panel/RunPanelRail.tsx +38 -0
  221. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +55 -0
  222. package/apps/web/src/{column → run-panel}/clipboard.ts +21 -10
  223. package/apps/web/src/run-panel/host-contract.ts +123 -0
  224. package/apps/web/src/{column → run-panel}/host.ts +31 -23
  225. package/apps/web/src/run-panel/input-bridge.ts +75 -0
  226. package/apps/web/src/run-panel/keyboard.ts +53 -0
  227. package/apps/web/src/run-panel/run-panel-location.ts +35 -0
  228. package/apps/web/src/{column → run-panel}/use-session-list.ts +3 -3
  229. package/apps/web/src/run-panel/workspace-state.ts +43 -0
  230. package/apps/web/src/{column.tsx → run-panel.tsx} +20 -13
  231. package/apps/web/src/run-preparation.ts +1 -1
  232. package/{plugins/ragents.orchestration/web → apps/web/src}/run-view.ts +25 -7
  233. package/apps/web/src/settings-contributions.ts +16 -18
  234. package/apps/web/src/title-model-settings.ts +1 -1
  235. package/apps/web/src/toolLine.ts +1 -1
  236. package/apps/web/src/ui/ListDetail.tsx +1 -1
  237. package/apps/web/src/ui/dialog.tsx +5 -5
  238. package/apps/web/src/ui/frame.css +1 -0
  239. package/apps/web/src/ui/index.ts +5 -0
  240. package/apps/web/src/ui/popover.tsx +2 -2
  241. package/apps/web/src/ui/quassel.css +41 -0
  242. package/apps/web/src/ui/relative-time.ts +36 -0
  243. package/apps/web/src/ui/startup-notice.tsx +22 -0
  244. package/apps/web/src/ui/state-icon.tsx +60 -0
  245. package/apps/web/src/ui/state-vocabulary.ts +31 -0
  246. package/apps/web/src/ui/stop-button.tsx +22 -0
  247. package/apps/web/src/ui/tailwind.css +2 -3
  248. package/apps/web/src/ui/theme.css +19 -19
  249. package/apps/web/tsconfig.json +4 -5
  250. package/apps/web/tsconfig.plugin.json +44 -0
  251. package/bundles/ragents.activity/ragents-bundle.json +38 -0
  252. package/bundles/ragents.activity/server/index.js +14 -0
  253. package/bundles/ragents.activity/server/index.js.map +7 -0
  254. package/bundles/ragents.activity/web/classes.json +1 -0
  255. package/bundles/ragents.activity/web/index.js +2 -0
  256. package/bundles/ragents.activity/web/index.js.map +7 -0
  257. package/bundles/ragents.actor-programs/prompt.hbs +80 -0
  258. package/bundles/ragents.actor-programs/ragents-bundle.json +214 -0
  259. package/bundles/ragents.actor-programs/server/index.js +2071 -0
  260. package/bundles/ragents.actor-programs/server/index.js.map +7 -0
  261. package/bundles/ragents.actor-programs/summary.hbs +17 -0
  262. package/bundles/ragents.actor-programs/web/classes.json +1 -0
  263. package/bundles/ragents.actor-programs/web/index.js +27 -0
  264. package/bundles/ragents.actor-programs/web/index.js.map +7 -0
  265. package/bundles/ragents.ask/ask.hbs +4 -0
  266. package/bundles/ragents.ask/ragents-bundle.json +97 -0
  267. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js +13 -0
  268. package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +7 -0
  269. package/bundles/ragents.ask/server/exports/server/contract.js +11 -0
  270. package/bundles/ragents.ask/server/exports/server/contract.js.map +7 -0
  271. package/bundles/ragents.ask/server/index.js +279 -0
  272. package/bundles/ragents.ask/server/index.js.map +7 -0
  273. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +2 -0
  274. package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +7 -0
  275. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +2 -0
  276. package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +7 -0
  277. package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js +25 -0
  278. package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map +7 -0
  279. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +2 -0
  280. package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +7 -0
  281. package/bundles/ragents.ask/web/classes.json +1 -0
  282. package/bundles/ragents.ask/web/exports/ask-payload.js +2 -0
  283. package/bundles/ragents.ask/web/exports/ask-payload.js.map +7 -0
  284. package/bundles/ragents.ask/web/exports/web/QuestionCard.js +2 -0
  285. package/bundles/ragents.ask/web/exports/web/QuestionCard.js.map +7 -0
  286. package/bundles/ragents.ask/web/exports/web/api.js +2 -0
  287. package/bundles/ragents.ask/web/exports/web/api.js.map +7 -0
  288. package/bundles/ragents.ask/web/index.js +2 -0
  289. package/bundles/ragents.ask/web/index.js.map +7 -0
  290. package/bundles/ragents.browser/ragents-bundle.json +53 -0
  291. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js +11 -0
  292. package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +7 -0
  293. package/bundles/ragents.browser/server/exports/server/contract.js +9 -0
  294. package/bundles/ragents.browser/server/exports/server/contract.js.map +7 -0
  295. package/bundles/ragents.browser/server/index.js +479 -0
  296. package/bundles/ragents.browser/server/index.js.map +7 -0
  297. package/bundles/ragents.browser/skills/browser-testing/SKILL.md +38 -0
  298. package/bundles/ragents.documents/prompt.hbs +18 -0
  299. package/bundles/ragents.documents/ragents-bundle.json +120 -0
  300. package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js +37 -0
  301. package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js.map +7 -0
  302. package/bundles/ragents.documents/server/exports/contract.js +11 -0
  303. package/bundles/ragents.documents/server/exports/contract.js.map +7 -0
  304. package/bundles/ragents.documents/server/index.js +290 -0
  305. package/bundles/ragents.documents/server/index.js.map +7 -0
  306. package/bundles/ragents.documents/web/classes.json +1 -0
  307. package/bundles/ragents.documents/web/index.js +26 -0
  308. package/bundles/ragents.documents/web/index.js.map +7 -0
  309. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +49 -0
  310. package/bundles/ragents.lsp-fsharp/server/index.js +82 -0
  311. package/bundles/ragents.lsp-fsharp/server/index.js.map +7 -0
  312. package/bundles/ragents.lsp-fsharp/web/classes.json +1 -0
  313. package/bundles/ragents.lsp-fsharp/web/index.js +2 -0
  314. package/bundles/ragents.lsp-fsharp/web/index.js.map +7 -0
  315. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +61 -0
  316. package/bundles/ragents.lsp-roslyn/server/index.js +208 -0
  317. package/bundles/ragents.lsp-roslyn/server/index.js.map +7 -0
  318. package/bundles/ragents.lsp-roslyn/web/classes.json +1 -0
  319. package/bundles/ragents.lsp-roslyn/web/index.js +2 -0
  320. package/bundles/ragents.lsp-roslyn/web/index.js.map +7 -0
  321. package/bundles/ragents.lsp-typescript/ragents-bundle.json +36 -0
  322. package/bundles/ragents.lsp-typescript/server/index.js +13 -0
  323. package/bundles/ragents.lsp-typescript/server/index.js.map +7 -0
  324. package/bundles/ragents.lsp-typescript/web/classes.json +1 -0
  325. package/bundles/ragents.lsp-typescript/web/index.js +2 -0
  326. package/bundles/ragents.lsp-typescript/web/index.js.map +7 -0
  327. package/bundles/ragents.model-relay/ragents-bundle.json +33 -0
  328. package/bundles/ragents.model-relay/server/index.js +230 -0
  329. package/bundles/ragents.model-relay/server/index.js.map +7 -0
  330. package/bundles/ragents.orchestration/orchestration.hbs +106 -0
  331. package/bundles/ragents.orchestration/ragents-bundle.json +194 -0
  332. package/bundles/ragents.orchestration/server/index.js +277 -0
  333. package/bundles/ragents.orchestration/server/index.js.map +7 -0
  334. package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js +2 -0
  335. package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js.map +7 -0
  336. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +2 -0
  337. package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js.map +7 -0
  338. package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js +2 -0
  339. package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js.map +7 -0
  340. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +2 -0
  341. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +7 -0
  342. package/bundles/ragents.orchestration/web/classes.json +1 -0
  343. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +2 -0
  344. package/bundles/ragents.orchestration/web/exports/web/program-slot.js.map +7 -0
  345. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +2 -0
  346. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +7 -0
  347. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +2 -0
  348. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +7 -0
  349. package/bundles/ragents.orchestration/web/index.js +51 -0
  350. package/bundles/ragents.orchestration/web/index.js.map +7 -0
  351. package/bundles/ragents.overseer/ragents-bundle.json +144 -0
  352. package/bundles/ragents.overseer/server/index.js +652 -0
  353. package/bundles/ragents.overseer/server/index.js.map +7 -0
  354. package/bundles/ragents.overseer/web/classes.json +1 -0
  355. package/bundles/ragents.overseer/web/index.js +25 -0
  356. package/bundles/ragents.overseer/web/index.js.map +7 -0
  357. package/bundles/ragents.processes/ragents-bundle.json +93 -0
  358. package/bundles/ragents.processes/server/index.js +204 -0
  359. package/bundles/ragents.processes/server/index.js.map +7 -0
  360. package/bundles/ragents.processes/web/classes.json +1 -0
  361. package/bundles/ragents.processes/web/index.js +4 -0
  362. package/bundles/ragents.processes/web/index.js.map +7 -0
  363. package/bundles/ragents.product/preamble.hbs +9 -0
  364. package/bundles/ragents.product/ragents-bundle.json +93 -0
  365. package/bundles/ragents.product/server/index.js +208 -0
  366. package/bundles/ragents.product/server/index.js.map +7 -0
  367. package/bundles/ragents.product/web/classes.json +1 -0
  368. package/bundles/ragents.product/web/index.js +2 -0
  369. package/bundles/ragents.product/web/index.js.map +7 -0
  370. package/bundles/ragents.profile-distribution/ragents-bundle.json +64 -0
  371. package/bundles/ragents.profile-distribution/server/index.js +241 -0
  372. package/bundles/ragents.profile-distribution/server/index.js.map +7 -0
  373. package/bundles/ragents.reference/ragents-bundle.json +39 -0
  374. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +27 -0
  375. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +10 -0
  376. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +80 -0
  377. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +82 -0
  378. package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +154 -0
  379. package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +9 -0
  380. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +32 -0
  381. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +59 -0
  382. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +13 -0
  383. package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +9 -0
  384. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +81 -0
  385. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +26 -0
  386. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +34 -0
  387. package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +24 -0
  388. package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +10 -0
  389. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -0
  390. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +5 -0
  391. package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -0
  392. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +27 -0
  393. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +137 -0
  394. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/state.ts +38 -0
  395. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +42 -0
  396. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +38 -0
  397. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +218 -0
  398. package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +12 -0
  399. package/bundles/ragents.reference/run-scripts/moderated-round/package.json +9 -0
  400. package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +60 -0
  401. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +26 -0
  402. package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +24 -0
  403. package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +18 -0
  404. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +16 -0
  405. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +39 -0
  406. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +15 -0
  407. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/server.ts +14 -0
  408. package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +13 -0
  409. package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +9 -0
  410. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +65 -0
  411. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +26 -0
  412. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +42 -0
  413. package/bundles/ragents.reference/run-scripts/word-game/RUN.md +25 -0
  414. package/bundles/ragents.reference/run-scripts/word-game/package.json +11 -0
  415. package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +27 -0
  416. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +23 -0
  417. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +105 -0
  418. package/bundles/ragents.reference/run-scripts/word-game/src/state.ts +22 -0
  419. package/bundles/ragents.reference/run-scripts/word-game/src/view.tsx +54 -0
  420. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +252 -0
  421. package/bundles/ragents.reference/server/index.js +16 -0
  422. package/bundles/ragents.reference/server/index.js.map +7 -0
  423. package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +12 -0
  424. package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +12 -0
  425. package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +12 -0
  426. package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +12 -0
  427. package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +12 -0
  428. package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +12 -0
  429. package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +12 -0
  430. package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +12 -0
  431. package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +12 -0
  432. package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +12 -0
  433. package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +12 -0
  434. package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +12 -0
  435. package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +12 -0
  436. package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +12 -0
  437. package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +12 -0
  438. package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +12 -0
  439. package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +12 -0
  440. package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +12 -0
  441. package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +12 -0
  442. package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +12 -0
  443. package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +12 -0
  444. package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +12 -0
  445. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +12 -0
  446. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +12 -0
  447. package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +12 -0
  448. package/bundles/ragents.reference/skills/decision-brief/SKILL.md +33 -0
  449. package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +33 -0
  450. package/bundles/ragents.reference/web/classes.json +1 -0
  451. package/bundles/ragents.reference/web/index.js +2 -0
  452. package/bundles/ragents.reference/web/index.js.map +7 -0
  453. package/bundles/ragents.todo/ragents-bundle.json +48 -0
  454. package/bundles/ragents.todo/server/index.js +108 -0
  455. package/bundles/ragents.todo/server/index.js.map +7 -0
  456. package/bundles/ragents.todo/web/classes.json +1 -0
  457. package/bundles/ragents.todo/web/index.js +2 -0
  458. package/bundles/ragents.todo/web/index.js.map +7 -0
  459. package/bundles/ragents.transcript/ragents-bundle.json +34 -0
  460. package/bundles/ragents.transcript/server/index.js +102 -0
  461. package/bundles/ragents.transcript/server/index.js.map +7 -0
  462. package/bundles/ragents.watch/ragents-bundle.json +39 -0
  463. package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js +11 -0
  464. package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js.map +7 -0
  465. package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js +10 -0
  466. package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js.map +7 -0
  467. package/bundles/ragents.watch/server/exports/contract.js +9 -0
  468. package/bundles/ragents.watch/server/exports/contract.js.map +7 -0
  469. package/bundles/ragents.watch/server/exports/server/contract.js +9 -0
  470. package/bundles/ragents.watch/server/exports/server/contract.js.map +7 -0
  471. package/bundles/ragents.watch/server/index.js +482 -0
  472. package/bundles/ragents.watch/server/index.js.map +7 -0
  473. package/bundles/ragents.workspace/prompt.hbs +7 -0
  474. package/bundles/ragents.workspace/ragents-bundle.json +148 -0
  475. package/bundles/ragents.workspace/server/index.js +1049 -0
  476. package/bundles/ragents.workspace/server/index.js.map +7 -0
  477. package/bundles/ragents.workspace/web/classes.json +1 -0
  478. package/bundles/ragents.workspace/web/index.js +39 -0
  479. package/bundles/ragents.workspace/web/index.js.map +7 -0
  480. package/package.json +5 -16
  481. package/packages/agent/dist/core/agent-session-runtime.d.ts +33 -0
  482. package/packages/agent/dist/core/agent-session-services.d.ts +35 -0
  483. package/packages/agent/dist/core/agent-session.d.ts +234 -0
  484. package/packages/agent/dist/core/agent-settings.d.ts +27 -0
  485. package/packages/agent/dist/core/auth-guidance.d.ts +4 -0
  486. package/packages/agent/dist/core/compaction/compaction.d.ts +116 -0
  487. package/packages/agent/dist/core/compaction/index.d.ts +6 -0
  488. package/packages/agent/dist/core/compaction/utils.d.ts +39 -0
  489. package/packages/agent/dist/core/defaults.d.ts +3 -0
  490. package/packages/agent/dist/core/extensions/index.d.ts +11 -0
  491. package/packages/agent/dist/core/extensions/loader.d.ts +12 -0
  492. package/packages/agent/dist/core/extensions/runner.d.ts +39 -0
  493. package/packages/agent/dist/core/extensions/types.d.ts +156 -0
  494. package/packages/agent/dist/core/extensions/wrapper.d.ts +12 -0
  495. package/packages/agent/dist/core/messages.d.ts +37 -0
  496. package/packages/agent/dist/core/model-runtime.d.ts +32 -0
  497. package/packages/agent/dist/core/provider-composer.d.ts +25 -0
  498. package/packages/agent/dist/core/resource-loader.d.ts +39 -0
  499. package/packages/agent/dist/core/sdk.d.ts +38 -0
  500. package/packages/agent/dist/core/session-manager.d.ts +189 -0
  501. package/packages/agent/dist/core/skills.d.ts +20 -0
  502. package/packages/agent/dist/core/source-info.d.ts +16 -0
  503. package/packages/agent/dist/core/system-prompt.d.ts +21 -0
  504. package/packages/agent/dist/core/tools/bash.d.ts +63 -0
  505. package/packages/agent/dist/core/tools/edit-diff.d.ts +98 -0
  506. package/packages/agent/dist/core/tools/edit.d.ts +41 -0
  507. package/packages/agent/dist/core/tools/file-mutation-queue.d.ts +6 -0
  508. package/packages/agent/dist/core/tools/index.d.ts +5 -0
  509. package/packages/agent/dist/core/tools/output-accumulator.d.ts +58 -0
  510. package/packages/agent/dist/core/tools/path-utils.d.ts +8 -0
  511. package/packages/agent/dist/core/tools/read.d.ts +33 -0
  512. package/packages/agent/dist/core/tools/truncate.d.ts +61 -0
  513. package/packages/agent/dist/core/tools/write.d.ts +23 -0
  514. package/packages/agent/dist/index.d.ts +13 -0
  515. package/packages/agent/dist/loop/agent-loop.d.ts +13 -0
  516. package/packages/agent/dist/loop/agent.d.ts +103 -0
  517. package/packages/agent/dist/loop/index.d.ts +5 -0
  518. package/packages/agent/dist/loop/types.d.ts +333 -0
  519. package/packages/agent/dist/loop/uuid.d.ts +2 -0
  520. package/packages/agent/dist/utils/child-process.d.ts +17 -0
  521. package/packages/agent/dist/utils/exif-orientation.d.ts +5 -0
  522. package/packages/agent/dist/utils/frontmatter.d.ts +8 -0
  523. package/packages/agent/dist/utils/image-convert.d.ts +2 -0
  524. package/packages/agent/dist/utils/image-process.d.ts +18 -0
  525. package/packages/agent/dist/utils/image-resize-core.d.ts +30 -0
  526. package/packages/agent/dist/utils/image-resize-worker.d.ts +2 -0
  527. package/packages/agent/dist/utils/image-resize.d.ts +16 -0
  528. package/packages/agent/dist/utils/mime.d.ts +3 -0
  529. package/packages/agent/dist/utils/paths.d.ts +15 -0
  530. package/packages/agent/dist/utils/photon.d.ts +21 -0
  531. package/packages/agent/dist/utils/shell.d.ts +17 -0
  532. package/packages/agent/dist/utils/sleep.d.ts +5 -0
  533. package/packages/agent/package.json +3 -32
  534. package/packages/agent/src/core/agent-session-runtime.ts +15 -469
  535. package/packages/agent/src/core/agent-session-services.ts +17 -167
  536. package/packages/agent/src/core/agent-session.ts +154 -2403
  537. package/packages/agent/src/core/agent-settings.ts +20 -0
  538. package/packages/agent/src/core/auth-guidance.ts +0 -4
  539. package/packages/agent/src/core/compaction/compaction.ts +4 -33
  540. package/packages/agent/src/core/compaction/index.ts +0 -1
  541. package/packages/agent/src/core/compaction/utils.ts +2 -2
  542. package/packages/agent/src/core/defaults.ts +1 -1
  543. package/packages/agent/src/core/extensions/index.ts +6 -117
  544. package/packages/agent/src/core/extensions/loader.ts +21 -605
  545. package/packages/agent/src/core/extensions/runner.ts +48 -969
  546. package/packages/agent/src/core/extensions/types.ts +35 -1298
  547. package/packages/agent/src/core/extensions/wrapper.ts +13 -34
  548. package/packages/agent/src/core/messages.ts +5 -109
  549. package/packages/agent/src/core/model-runtime.ts +109 -467
  550. package/packages/agent/src/core/provider-composer.ts +21 -451
  551. package/packages/agent/src/core/resource-loader.ts +18 -822
  552. package/packages/agent/src/core/sdk.ts +46 -281
  553. package/packages/agent/src/core/session-manager.ts +11 -891
  554. package/packages/agent/src/core/skills.ts +8 -440
  555. package/packages/agent/src/core/source-info.ts +0 -12
  556. package/packages/agent/src/core/system-prompt.ts +2 -41
  557. package/packages/agent/src/core/tools/bash.ts +20 -32
  558. package/packages/agent/src/core/tools/edit-diff.ts +0 -60
  559. package/packages/agent/src/core/tools/edit.ts +2 -18
  560. package/packages/agent/src/core/tools/index.ts +4 -130
  561. package/packages/agent/src/core/tools/output-accumulator.ts +33 -5
  562. package/packages/agent/src/core/tools/path-utils.ts +2 -49
  563. package/packages/agent/src/core/tools/read.ts +4 -12
  564. package/packages/agent/src/core/tools/truncate.ts +0 -15
  565. package/packages/agent/src/core/tools/write.ts +1 -8
  566. package/packages/agent/src/index.ts +11 -272
  567. package/packages/{agent-core/src → agent/src/loop}/agent-loop.ts +127 -273
  568. package/packages/{agent-core/src → agent/src/loop}/agent.ts +12 -164
  569. package/packages/{agent-core/src → agent/src/loop}/types.ts +6 -105
  570. package/packages/agent/src/utils/child-process.ts +0 -13
  571. package/packages/agent/src/utils/image-convert.ts +0 -25
  572. package/packages/agent/src/utils/paths.ts +1 -71
  573. package/packages/agent/src/utils/shell.ts +13 -156
  574. package/packages/ai/dist/api/ai-sdk-messages.d.ts +9 -0
  575. package/packages/ai/dist/api/ai-sdk-transport.d.ts +13 -0
  576. package/packages/ai/dist/api/ai-sdk.d.ts +13 -0
  577. package/packages/ai/dist/api/ai-sdk.lazy.d.ts +3 -0
  578. package/packages/ai/dist/api/lazy.d.ts +15 -0
  579. package/packages/ai/dist/api/simple-options.d.ts +4 -0
  580. package/packages/ai/dist/api/transform-messages.d.ts +8 -0
  581. package/packages/ai/dist/api-registry.d.ts +25 -0
  582. package/packages/ai/dist/auth/context.d.ts +4 -0
  583. package/packages/ai/dist/auth/helpers.d.ts +4 -0
  584. package/packages/ai/dist/auth/resolve.d.ts +19 -0
  585. package/packages/ai/dist/auth/types.d.ts +51 -0
  586. package/packages/ai/dist/env-api-keys.d.ts +8 -0
  587. package/packages/ai/dist/index.d.ts +19 -0
  588. package/packages/ai/dist/models.d.ts +71 -0
  589. package/packages/ai/dist/models.generated.d.ts +8021 -0
  590. package/packages/ai/dist/providers/all.d.ts +15 -0
  591. package/packages/ai/dist/providers/faux.d.ts +97 -0
  592. package/packages/ai/dist/providers/openrouter.d.ts +3 -0
  593. package/packages/ai/dist/providers/openrouter.models.d.ts +8019 -0
  594. package/packages/ai/dist/types.d.ts +541 -0
  595. package/packages/ai/dist/utils/diagnostics.d.ts +13 -0
  596. package/packages/ai/dist/utils/error-body.d.ts +25 -0
  597. package/packages/ai/dist/utils/estimate.d.ts +17 -0
  598. package/packages/ai/dist/utils/event-stream.d.ts +21 -0
  599. package/packages/ai/dist/utils/headers.d.ts +2 -0
  600. package/packages/ai/dist/utils/json-parse.d.ts +16 -0
  601. package/packages/ai/dist/utils/overflow.d.ts +54 -0
  602. package/packages/ai/dist/utils/provider-env.d.ts +7 -0
  603. package/packages/ai/dist/utils/retry.d.ts +12 -0
  604. package/packages/ai/dist/utils/sanitize-unicode.d.ts +22 -0
  605. package/packages/ai/dist/utils/typebox-helpers.d.ts +17 -0
  606. package/packages/ai/dist/utils/validation.d.ts +10 -0
  607. package/packages/ai/package.json +2 -6
  608. package/packages/ai/src/api/ai-sdk-transport.ts +2 -2
  609. package/packages/ai/src/api/simple-options.ts +0 -34
  610. package/packages/ai/src/api-registry.ts +1 -12
  611. package/packages/ai/src/auth/context.ts +1 -30
  612. package/packages/ai/src/auth/helpers.ts +3 -34
  613. package/packages/ai/src/auth/resolve.ts +10 -108
  614. package/packages/ai/src/auth/types.ts +9 -176
  615. package/packages/ai/src/index.ts +1 -13
  616. package/packages/ai/src/models.ts +41 -407
  617. package/packages/ai/src/providers/all.ts +3 -31
  618. package/packages/ai/src/providers/openrouter.models.ts +14 -0
  619. package/packages/ai/src/types.ts +0 -104
  620. package/packages/ai/src/utils/diagnostics.ts +0 -32
  621. package/packages/ai/src/utils/headers.ts +0 -11
  622. package/packages/ai/src/utils/overflow.ts +0 -7
  623. package/packages/ai/src/utils/validation.ts +0 -15
  624. package/packages/ragents/package.json +3 -6
  625. package/packages/ragents/src/access.ts +2 -1
  626. package/packages/ragents/src/agents/actor-input.ts +14 -18
  627. package/packages/ragents/src/agents/catalog.ts +3 -3
  628. package/packages/ragents/src/agents/plugins.ts +0 -4
  629. package/packages/ragents/src/agents/scheduler.ts +232 -78
  630. package/packages/ragents/src/agents/schemas.ts +1 -36
  631. package/packages/ragents/src/agents/tool-orientation.ts +1 -1
  632. package/packages/ragents/src/agents/tools.ts +72 -73
  633. package/packages/ragents/src/agents/toolset.ts +5 -5
  634. package/packages/ragents/src/agents/turn.ts +2 -14
  635. package/packages/ragents/src/agents/workspaces.ts +18 -0
  636. package/packages/ragents/src/domain/actor-reference.ts +22 -0
  637. package/packages/ragents/src/domain/driver.ts +0 -9
  638. package/packages/ragents/src/domain/event-semantics.ts +62 -74
  639. package/packages/ragents/src/domain/event-validation.ts +22 -21
  640. package/packages/ragents/src/domain/events.ts +19 -7
  641. package/packages/ragents/src/domain/json.ts +2 -0
  642. package/packages/ragents/src/domain/model.ts +40 -18
  643. package/packages/ragents/src/domain/projection.ts +43 -15
  644. package/packages/ragents/src/domain/schema-errors.ts +3 -3
  645. package/packages/ragents/src/drivers/agent-hooks.ts +40 -0
  646. package/packages/ragents/src/drivers/agent-runtime.ts +118 -186
  647. package/packages/ragents/src/drivers/agent.ts +5 -20
  648. package/packages/ragents/src/drivers/attachments.ts +4 -24
  649. package/packages/ragents/src/drivers/skill-preload.ts +4 -16
  650. package/packages/ragents/src/drivers/types.ts +20 -3
  651. package/packages/ragents/src/http/contracts.ts +16 -3
  652. package/packages/ragents/src/http/methods.ts +32 -33
  653. package/packages/ragents/src/index.ts +5 -15
  654. package/packages/ragents/src/plugin-host.ts +151 -105
  655. package/packages/ragents/src/plugin-types.ts +86 -23
  656. package/packages/ragents/src/rpc/peer.ts +6 -0
  657. package/packages/ragents/src/runtime/decisions/actions.ts +40 -37
  658. package/packages/ragents/src/runtime/decisions/actors.ts +90 -51
  659. package/packages/ragents/src/runtime/decisions/artifacts.ts +2 -2
  660. package/packages/ragents/src/runtime/decisions/inputs.ts +3 -3
  661. package/packages/ragents/src/runtime/decisions/subscriptions.ts +9 -7
  662. package/packages/ragents/src/runtime/decisions/turns.ts +37 -4
  663. package/packages/ragents/src/runtime/guards.ts +12 -21
  664. package/packages/ragents/src/runtime/journal-storage.ts +4 -2
  665. package/packages/ragents/src/runtime/journal.ts +1 -1
  666. package/packages/ragents/src/runtime/orchestration.ts +31 -14
  667. package/packages/ragents/src/runtime/serial-queue.ts +24 -0
  668. package/packages/ragents/src/runtime/stop.ts +19 -44
  669. package/packages/ragents/src/script/mediators.ts +4 -5
  670. package/packages/ragents/src/typescript/index.ts +2 -0
  671. package/packages/ragents/src/typescript/run-context.ts +10 -8
  672. package/packages/ragents/src/typescript/snippet.ts +7 -6
  673. package/packages/workspace-executor/package.json +2 -2
  674. package/packages/workspace-executor/src/bash-launch.ts +45 -0
  675. package/packages/workspace-executor/src/browser/contract.ts +71 -0
  676. package/packages/workspace-executor/src/browser/module.ts +74 -0
  677. package/packages/workspace-executor/src/browser/pages.ts +298 -0
  678. package/packages/workspace-executor/src/browser/playwright.ts +52 -0
  679. package/packages/workspace-executor/src/commands.ts +170 -0
  680. package/packages/workspace-executor/src/context.ts +34 -6
  681. package/packages/workspace-executor/src/errors.ts +12 -0
  682. package/packages/workspace-executor/src/executor.ts +62 -104
  683. package/packages/workspace-executor/src/files.ts +287 -0
  684. package/packages/workspace-executor/src/index.ts +82 -18
  685. package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +1 -0
  686. package/packages/workspace-executor/src/language-server/contract.ts +14 -0
  687. package/packages/workspace-executor/src/language-server/host.ts +82 -26
  688. package/packages/workspace-executor/src/language-server/module.ts +107 -0
  689. package/packages/workspace-executor/src/language-server/workspace-solutions.ts +90 -0
  690. package/packages/workspace-executor/src/managed-process.ts +1 -1
  691. package/packages/workspace-executor/src/module.ts +35 -0
  692. package/packages/workspace-executor/src/modules.ts +25 -0
  693. package/packages/workspace-executor/src/paths.ts +57 -5
  694. package/packages/workspace-executor/src/process-sandbox.ts +16 -0
  695. package/packages/workspace-executor/src/processes/module.ts +48 -0
  696. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/process-table.ts +80 -57
  697. package/packages/workspace-executor/src/processes/scanner.ts +106 -0
  698. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/snapshot.ts +23 -11
  699. package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/terminator.ts +19 -20
  700. package/packages/workspace-executor/src/run-folders.ts +33 -0
  701. package/packages/workspace-executor/src/safe-environment.ts +14 -0
  702. package/packages/workspace-executor/src/sandbox-tools.ts +206 -36
  703. package/packages/workspace-executor/src/shell-platform.ts +2 -2
  704. package/plugins/package.json +1 -1
  705. package/plugins/ragents.activity/ragents-plugin.json +3 -0
  706. package/plugins/ragents.activity/server/index.ts +2 -2
  707. package/plugins/ragents.activity/web/ActivityHeader.tsx +2 -2
  708. package/plugins/ragents.activity/web/activity.ts +1 -1
  709. package/plugins/ragents.activity/web/index.tsx +1 -1
  710. package/plugins/ragents.actor-programs/prompt.hbs +8 -7
  711. package/plugins/ragents.actor-programs/ragents-plugin.json +3 -0
  712. package/plugins/ragents.actor-programs/server/agent-tools.ts +3 -3
  713. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/capability-resolver.ts +1 -16
  714. package/plugins/ragents.actor-programs/server/controls-template.ts +5 -18
  715. package/plugins/ragents.actor-programs/server/controls-tool.ts +8 -11
  716. package/plugins/ragents.actor-programs/server/index.ts +10 -10
  717. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/limits.ts +4 -4
  718. package/plugins/ragents.actor-programs/server/methods.ts +2 -2
  719. package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/operations.ts +2 -4
  720. package/plugins/ragents.actor-programs/server/project-diagnostics.ts +65 -70
  721. package/plugins/ragents.actor-programs/server/prompts.ts +4 -4
  722. package/plugins/ragents.actor-programs/server/routes.ts +14 -8
  723. package/plugins/ragents.actor-programs/server/runtime.ts +132 -55
  724. package/plugins/ragents.actor-programs/server/templates.ts +35 -80
  725. package/plugins/ragents.actor-programs/server/test-report.ts +106 -0
  726. package/plugins/ragents.actor-programs/server/tool-contributor.ts +4 -4
  727. package/plugins/ragents.actor-programs/summary.hbs +1 -1
  728. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +15 -10
  729. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +47 -30
  730. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +15 -17
  731. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +3 -3
  732. package/plugins/ragents.actor-programs/web/FunctionForm.tsx +3 -3
  733. package/plugins/ragents.actor-programs/web/ProgramSource.tsx +12 -3
  734. package/plugins/ragents.actor-programs/web/api.ts +5 -5
  735. package/plugins/ragents.actor-programs/web/bridge.ts +2 -3
  736. package/plugins/ragents.actor-programs/web/chat-state.ts +9 -8
  737. package/plugins/ragents.actor-programs/web/index.tsx +7 -17
  738. package/plugins/ragents.actor-programs/web/program-state.ts +3 -3
  739. package/plugins/ragents.actor-programs/web/state-revision.ts +2 -2
  740. package/plugins/ragents.ask/ask-payload.ts +25 -0
  741. package/plugins/ragents.ask/contract.ts +2 -2
  742. package/plugins/ragents.ask/ragents-plugin.json +7 -0
  743. package/plugins/ragents.ask/server/answer-method.ts +1 -1
  744. package/plugins/ragents.ask/server/ask-service.ts +43 -19
  745. package/plugins/ragents.ask/server/ask-tool.ts +2 -2
  746. package/plugins/ragents.ask/server/contract.ts +9 -1
  747. package/plugins/ragents.ask/server/index.ts +8 -10
  748. package/plugins/ragents.ask/server/tool-contributor.ts +3 -3
  749. package/plugins/ragents.ask/web/AskActionView.tsx +36 -0
  750. package/{apps/web/src/chat → plugins/ragents.ask/web}/QuestionCard.tsx +7 -5
  751. package/plugins/ragents.ask/web/QuestionSection.tsx +22 -21
  752. package/plugins/ragents.ask/web/api.ts +1 -1
  753. package/plugins/ragents.ask/web/index.tsx +11 -8
  754. package/plugins/ragents.browser/provision.ts +9 -8
  755. package/plugins/ragents.browser/ragents-plugin.json +6 -0
  756. package/plugins/ragents.browser/server/browser.ts +165 -286
  757. package/plugins/ragents.browser/server/contract.ts +8 -19
  758. package/plugins/ragents.browser/server/index.ts +8 -7
  759. package/plugins/ragents.browser/server/tools.ts +29 -37
  760. package/plugins/ragents.browser/skills/browser-testing/SKILL.md +3 -1
  761. package/plugins/ragents.documents/contract.ts +4 -2
  762. package/plugins/ragents.documents/ragents-plugin.json +6 -0
  763. package/plugins/ragents.documents/server/config.ts +1 -1
  764. package/plugins/ragents.documents/server/document-write-tool.ts +2 -2
  765. package/plugins/ragents.documents/server/files-route.ts +2 -3
  766. package/plugins/ragents.documents/server/index.ts +10 -11
  767. package/plugins/ragents.documents/server/show-document-tool.ts +2 -2
  768. package/plugins/ragents.documents/server/store.ts +3 -3
  769. package/plugins/ragents.documents/server/tool-contributor.ts +3 -3
  770. package/plugins/ragents.documents/web/DocumentViewer.tsx +5 -6
  771. package/plugins/ragents.documents/web/api.ts +1 -1
  772. package/plugins/ragents.documents/web/index.tsx +4 -4
  773. package/plugins/ragents.lsp-fsharp/provision.ts +2 -2
  774. package/plugins/ragents.lsp-fsharp/ragents-plugin.json +3 -0
  775. package/plugins/ragents.lsp-fsharp/server/index.ts +3 -3
  776. package/plugins/ragents.lsp-fsharp/web/index.tsx +1 -1
  777. package/plugins/ragents.lsp-roslyn/provision.ts +2 -2
  778. package/plugins/ragents.lsp-roslyn/ragents-plugin.json +3 -0
  779. package/plugins/ragents.lsp-roslyn/server/index.ts +47 -8
  780. package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +145 -0
  781. package/plugins/ragents.lsp-roslyn/web/index.tsx +1 -1
  782. package/plugins/ragents.lsp-typescript/ragents-plugin.json +3 -0
  783. package/plugins/ragents.lsp-typescript/server/index.ts +3 -3
  784. package/plugins/ragents.lsp-typescript/web/index.tsx +1 -1
  785. package/plugins/ragents.model-relay/ragents-plugin.json +3 -0
  786. package/plugins/ragents.model-relay/server/config.ts +5 -31
  787. package/plugins/ragents.model-relay/server/index.ts +5 -6
  788. package/plugins/ragents.model-relay/server/relay.ts +8 -9
  789. package/plugins/ragents.orchestration/contract.ts +13 -14
  790. package/plugins/ragents.orchestration/orchestration.hbs +4 -3
  791. package/plugins/ragents.orchestration/ragents-plugin.json +6 -0
  792. package/plugins/ragents.orchestration/server/index.ts +13 -16
  793. package/plugins/ragents.orchestration/server/run-stop-tool.ts +4 -4
  794. package/plugins/ragents.orchestration/server/{canvas-tool.ts → surface-tool.ts} +42 -43
  795. package/plugins/ragents.orchestration/surface.hbs +34 -0
  796. package/plugins/ragents.orchestration/tiled-layout.ts +16 -16
  797. package/plugins/ragents.orchestration/web/ActorChat.tsx +16 -14
  798. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +23 -26
  799. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +5 -6
  800. package/plugins/ragents.orchestration/web/ActorPopout.tsx +7 -5
  801. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +16 -16
  802. package/plugins/ragents.orchestration/web/{ActorCanvasControls.tsx → ActorSurfaceControls.tsx} +23 -28
  803. package/plugins/ragents.orchestration/web/ActorTile.tsx +2 -2
  804. package/plugins/ragents.orchestration/web/Center.tsx +47 -55
  805. package/plugins/ragents.orchestration/web/DocumentsSection.tsx +4 -4
  806. package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +7 -7
  807. package/plugins/ragents.orchestration/web/FlowInspector.tsx +24 -42
  808. package/plugins/ragents.orchestration/web/JournalStatus.tsx +8 -8
  809. package/plugins/ragents.orchestration/web/MaterialBody.tsx +5 -5
  810. package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
  811. package/plugins/ragents.orchestration/web/SurfaceStartup.tsx +8 -0
  812. package/plugins/ragents.orchestration/web/{CanvasTiles.tsx → SurfaceTiles.tsx} +18 -18
  813. package/plugins/ragents.orchestration/web/{TiledCanvas.tsx → TiledSurface.tsx} +22 -22
  814. package/plugins/ragents.orchestration/web/actor-header-settings.ts +2 -2
  815. package/plugins/ragents.orchestration/web/api.ts +4 -10
  816. package/plugins/ragents.orchestration/web/constants.ts +0 -1
  817. package/plugins/ragents.orchestration/web/executions.ts +3 -3
  818. package/plugins/ragents.orchestration/web/index.tsx +19 -124
  819. package/plugins/ragents.orchestration/web/program-slot.ts +14 -0
  820. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +95 -0
  821. package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +109 -0
  822. package/plugins/ragents.orchestration/web/{column/RunColumn.tsx → run-panel/RunPanel.tsx} +211 -83
  823. package/plugins/ragents.orchestration/web/{column/ColumnSettings.tsx → run-panel/RunPanelSettings.tsx} +13 -13
  824. package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +165 -0
  825. package/plugins/ragents.orchestration/web/{column/column-actors.ts → run-panel/run-panel-actors.ts} +14 -13
  826. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +47 -0
  827. package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +30 -0
  828. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +71 -0
  829. package/plugins/ragents.orchestration/web/{column → run-panel}/sheet-status.ts +4 -4
  830. package/plugins/ragents.orchestration/web/{canvas-stage.ts → surface-entities.ts} +2 -2
  831. package/plugins/ragents.orchestration/web/{canvas-startup.ts → surface-startup.ts} +7 -10
  832. package/plugins/ragents.orchestration/web/surface-view-settings.ts +42 -0
  833. package/plugins/ragents.orchestration/web/tile-docking.ts +14 -14
  834. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +26 -26
  835. package/plugins/ragents.overseer/contract.ts +20 -14
  836. package/plugins/ragents.overseer/ragents-plugin.json +3 -0
  837. package/plugins/ragents.overseer/server/api.ts +34 -23
  838. package/plugins/ragents.overseer/server/coordinator-prompt.ts +3 -3
  839. package/plugins/ragents.overseer/server/coordinator.ts +19 -0
  840. package/plugins/ragents.overseer/server/index.ts +39 -27
  841. package/plugins/ragents.overseer/server/orientation.ts +4 -5
  842. package/plugins/ragents.overseer/server/quick-answer.ts +5 -4
  843. package/plugins/ragents.overseer/server/reset-method.ts +4 -3
  844. package/plugins/ragents.overseer/server/run-directory.ts +5 -5
  845. package/plugins/ragents.overseer/server/settings-method.ts +1 -1
  846. package/plugins/ragents.overseer/server/settings.ts +6 -6
  847. package/plugins/ragents.overseer/server/user-location.ts +20 -19
  848. package/plugins/ragents.overseer/web/ModelSettings.tsx +4 -4
  849. package/plugins/ragents.overseer/web/chat-display.ts +1 -1
  850. package/plugins/ragents.overseer/web/index.tsx +51 -26
  851. package/plugins/ragents.overseer/web/model-settings.ts +1 -1
  852. package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
  853. package/plugins/ragents.processes/contract.ts +5 -5
  854. package/plugins/ragents.processes/ragents-plugin.json +3 -0
  855. package/plugins/ragents.processes/server/index.ts +13 -19
  856. package/plugins/ragents.processes/server/methods.ts +18 -20
  857. package/plugins/ragents.processes/server/observer.ts +64 -104
  858. package/plugins/ragents.processes/server/run-processes.ts +24 -0
  859. package/plugins/ragents.processes/web/ProcessHeader.tsx +13 -16
  860. package/plugins/ragents.processes/web/index.tsx +2 -1
  861. package/plugins/ragents.processes/web/processes.ts +1 -1
  862. package/plugins/ragents.product/ragents-plugin.json +3 -0
  863. package/plugins/ragents.product/server/config.ts +12 -13
  864. package/plugins/ragents.product/server/index.ts +15 -16
  865. package/plugins/ragents.product/server/runtime.ts +2 -2
  866. package/plugins/ragents.product/web/index.tsx +3 -3
  867. package/plugins/ragents.profile-distribution/contract.ts +6 -9
  868. package/plugins/ragents.profile-distribution/ragents-plugin.json +3 -0
  869. package/plugins/ragents.profile-distribution/server/archive.ts +26 -51
  870. package/plugins/ragents.profile-distribution/server/config.ts +2 -2
  871. package/plugins/ragents.profile-distribution/server/index.ts +9 -16
  872. package/plugins/ragents.reference/examples.ts +1 -1
  873. package/plugins/ragents.reference/ragents-plugin.json +3 -0
  874. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +2 -2
  875. package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +1 -1
  876. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -1
  877. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +4 -4
  878. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +1 -1
  879. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +1 -1
  880. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  881. package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +2 -2
  882. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +1 -1
  883. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -1
  884. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/state.ts +2 -2
  885. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +11 -11
  886. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +15 -15
  887. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +3 -8
  888. package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +1 -1
  889. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  890. package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +2 -2
  891. package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +6 -6
  892. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +3 -3
  893. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  894. package/plugins/ragents.reference/run-scripts/word-game/RUN.md +1 -1
  895. package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
  896. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +1 -2
  897. package/plugins/ragents.reference/run-scripts/word-game/src/state.ts +6 -6
  898. package/plugins/ragents.reference/run-scripts/word-game/src/view.tsx +14 -14
  899. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +4 -5
  900. package/plugins/ragents.reference/server/index.ts +2 -2
  901. package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +1 -1
  902. package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +1 -1
  903. package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +1 -1
  904. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  905. package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +2 -2
  906. package/plugins/ragents.reference/skills/decision-brief/SKILL.md +2 -2
  907. package/plugins/ragents.reference/walkthroughs.ts +26 -26
  908. package/plugins/ragents.reference/web/StartGuides.tsx +2 -2
  909. package/plugins/ragents.reference/web/index.tsx +1 -1
  910. package/plugins/ragents.todo/ragents-plugin.json +3 -0
  911. package/plugins/ragents.todo/server/index.ts +2 -2
  912. package/plugins/ragents.todo/server/todo-tool.ts +4 -5
  913. package/plugins/ragents.todo/server/tool-contributor.ts +2 -2
  914. package/plugins/ragents.todo/web/TodoSection.tsx +3 -3
  915. package/plugins/ragents.todo/web/index.ts +1 -1
  916. package/plugins/ragents.transcript/ragents-plugin.json +3 -0
  917. package/plugins/ragents.transcript/server/index.ts +4 -4
  918. package/plugins/ragents.transcript/server/transcript.ts +2 -3
  919. package/plugins/ragents.watch/ragents-plugin.json +6 -0
  920. package/plugins/ragents.watch/server/condition.ts +2 -2
  921. package/plugins/ragents.watch/server/contract.ts +1 -1
  922. package/plugins/ragents.watch/server/functions.ts +3 -3
  923. package/plugins/ragents.watch/server/index.ts +3 -3
  924. package/plugins/ragents.watch/server/observation.ts +6 -6
  925. package/plugins/ragents.watch/server/service.ts +5 -5
  926. package/plugins/ragents.workspace/client/workspace-client.ts +129 -58
  927. package/plugins/ragents.workspace/contract.ts +98 -35
  928. package/plugins/ragents.workspace/prompt.hbs +1 -8
  929. package/plugins/ragents.workspace/ragents-plugin.json +3 -0
  930. package/plugins/ragents.workspace/server/binding.ts +122 -39
  931. package/plugins/ragents.workspace/server/browse-route.ts +96 -103
  932. package/plugins/ragents.workspace/server/clients.ts +236 -68
  933. package/plugins/ragents.workspace/server/config.ts +30 -0
  934. package/plugins/ragents.workspace/server/index.ts +61 -26
  935. package/plugins/ragents.workspace/server/runtime.ts +271 -46
  936. package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/shell-platform.ts +3 -5
  937. package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/workspace-tool-naming.ts +7 -1
  938. package/plugins/ragents.workspace/web/FileBrowser.tsx +11 -8
  939. package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +115 -61
  940. package/plugins/ragents.workspace/web/api.ts +1 -1
  941. package/plugins/ragents.workspace/web/index.tsx +1 -1
  942. package/ragents.config.core.ts +2 -8
  943. package/ragents.config.showcase.ts +61 -0
  944. package/scripts/agent/agent-cli.ts +265 -107
  945. package/scripts/agent/journal.ts +3 -1
  946. package/scripts/agent/turn-control.ts +19 -0
  947. package/scripts/package/build-package.ts +70 -15
  948. package/scripts/package/ragents.mjs +4 -2
  949. package/scripts/plugin/build-builtin-plugins.ts +52 -0
  950. package/scripts/plugin/plugin-cli.ts +99 -0
  951. package/scripts/provision/run-provision.ts +20 -18
  952. package/scripts/remote/connect.ts +75 -53
  953. package/scripts/remote/start.ts +3 -4
  954. package/scripts/workspace-client/run-workspace-client.ts +15 -9
  955. package/apps/server/agent-home/settings.json +0 -3
  956. package/apps/server/src/chat-attachments.ts +0 -52
  957. package/apps/server/src/chat-events.ts +0 -185
  958. package/apps/server/src/plugin-support/asset-path.ts +0 -4
  959. package/apps/server/src/profile/plugin-list.ts +0 -19
  960. package/apps/server/src/web-build.ts +0 -82
  961. package/apps/web/column.html +0 -12
  962. package/apps/web/index.html +0 -12
  963. package/apps/web/src/StartSurface.tsx +0 -161
  964. package/apps/web/src/chat/ChatInputToolbar.tsx +0 -488
  965. package/apps/web/src/chat/ChatMessages.tsx +0 -666
  966. package/apps/web/src/chat/ChatPanel.tsx +0 -61
  967. package/apps/web/src/chat/DetailModeSwitch.tsx +0 -58
  968. package/apps/web/src/chat/Markdown.tsx +0 -104
  969. package/apps/web/src/chat/StepPopover.tsx +0 -82
  970. package/apps/web/src/chat/WorkingScenes.tsx +0 -235
  971. package/apps/web/src/chat/attachments.ts +0 -53
  972. package/apps/web/src/chat/chat-scroll.ts +0 -41
  973. package/apps/web/src/chat/texts.ts +0 -61
  974. package/apps/web/src/chat/types.ts +0 -26
  975. package/apps/web/src/column/ColumnApp.tsx +0 -234
  976. package/apps/web/src/column/column-location.ts +0 -30
  977. package/apps/web/src/column/host-contract.ts +0 -93
  978. package/apps/web/src/panel/OverviewPage.tsx +0 -215
  979. package/apps/web/src/panel/SettingsPage.tsx +0 -98
  980. package/apps/web/src/panel/target-state.ts +0 -78
  981. package/apps/web/src/plugin-discovery.ts +0 -5
  982. package/apps/web/src/virtual-plugins.d.ts +0 -3
  983. package/apps/web/vite.config.ts +0 -140
  984. package/packages/agent/src/config.ts +0 -161
  985. package/packages/agent/src/core/auth-storage.ts +0 -271
  986. package/packages/agent/src/core/bash-executor.ts +0 -156
  987. package/packages/agent/src/core/compaction/branch-summarization.ts +0 -372
  988. package/packages/agent/src/core/diagnostics.ts +0 -15
  989. package/packages/agent/src/core/event-bus.ts +0 -33
  990. package/packages/agent/src/core/exec.ts +0 -107
  991. package/packages/agent/src/core/experimental.ts +0 -3
  992. package/packages/agent/src/core/footer-data-provider.ts +0 -388
  993. package/packages/agent/src/core/http-dispatcher.ts +0 -106
  994. package/packages/agent/src/core/index.ts +0 -78
  995. package/packages/agent/src/core/model-config.ts +0 -287
  996. package/packages/agent/src/core/model-registry.ts +0 -126
  997. package/packages/agent/src/core/model-resolver.ts +0 -675
  998. package/packages/agent/src/core/output-guard.ts +0 -108
  999. package/packages/agent/src/core/package-manager.ts +0 -2441
  1000. package/packages/agent/src/core/prompt-templates.ts +0 -284
  1001. package/packages/agent/src/core/resolve-config-value.ts +0 -287
  1002. package/packages/agent/src/core/runtime-credentials.ts +0 -48
  1003. package/packages/agent/src/core/session-cwd.ts +0 -59
  1004. package/packages/agent/src/core/settings-manager.ts +0 -1212
  1005. package/packages/agent/src/core/slash-commands.ts +0 -41
  1006. package/packages/agent/src/core/timings.ts +0 -50
  1007. package/packages/agent/src/core/tools/tool-definition-wrapper.ts +0 -45
  1008. package/packages/agent/src/core/trust-manager.ts +0 -244
  1009. package/packages/agent/src/utils/ansi.ts +0 -60
  1010. package/packages/agent/src/utils/fs-watch.ts +0 -30
  1011. package/packages/agent/src/utils/git.ts +0 -226
  1012. package/packages/agent/src/utils/json.ts +0 -6
  1013. package/packages/agent/src/utils/tools-manager.ts +0 -63
  1014. package/packages/agent-core/package.json +0 -32
  1015. package/packages/ai/src/api/openrouter-images.lazy.ts +0 -10
  1016. package/packages/ai/src/api/openrouter-images.ts +0 -98
  1017. package/packages/ai/src/auth/credential-store.ts +0 -51
  1018. package/packages/ai/src/compat/extension-oauth-types.ts +0 -45
  1019. package/packages/ai/src/image-models.generated.ts +0 -533
  1020. package/packages/ai/src/images-models.ts +0 -274
  1021. package/packages/ai/src/models-store.ts +0 -38
  1022. package/packages/ai/src/oauth.ts +0 -10
  1023. package/packages/ai/src/providers/openrouter-images.ts +0 -14
  1024. package/packages/ai/src/session-resources.ts +0 -24
  1025. package/packages/ai/src/utils/abort-signals.ts +0 -41
  1026. package/packages/ai/src/utils/deferred-tools.ts +0 -39
  1027. package/packages/ai/src/utils/hash.ts +0 -13
  1028. package/packages/ai/src/utils/node-http-proxy.ts +0 -112
  1029. package/plugins/ragents.actor-programs/server/client-runtime.ts +0 -16
  1030. package/plugins/ragents.ask/web/constants.ts +0 -1
  1031. package/plugins/ragents.lsp-roslyn/web/api.ts +0 -10
  1032. package/plugins/ragents.orchestration/web/CanvasStartup.tsx +0 -14
  1033. package/plugins/ragents.orchestration/web/canvas-view-settings.ts +0 -42
  1034. package/plugins/ragents.orchestration/web/column/AddresseeControl.tsx +0 -116
  1035. package/plugins/ragents.orchestration/web/column/column-settings.ts +0 -47
  1036. package/plugins/ragents.orchestration/web/column/column-state.ts +0 -68
  1037. package/plugins/ragents.orchestration/web/contract.ts +0 -25
  1038. package/plugins/ragents.product/model-settings-contract.ts +0 -10
  1039. package/plugins/ragents.profile-distribution/server/web.ts +0 -24
  1040. /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/authoring-contracts.ts +0 -0
  1041. /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/runtime-libraries.ts +0 -0
  1042. /package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/prompt-reader.ts +0 -0
  1043. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-contracts.d.ts +0 -0
  1044. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram-contracts.d.ts +0 -0
  1045. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram.css +0 -0
  1046. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/form-contracts.d.ts +0 -0
  1047. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/frame-layout.ts +0 -0
  1048. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/table-contracts.d.ts +0 -0
  1049. /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/viewer-contracts.d.ts +0 -0
  1050. /package/{plugins/ragents.orchestration/canvas.hbs → bundles/ragents.orchestration/surface.hbs} +0 -0
  1051. /package/packages/{agent-core/src → agent/src/loop}/index.ts +0 -0
  1052. /package/packages/{agent-core/src → agent/src/loop}/uuid.ts +0 -0
@@ -0,0 +1,833 @@
1
+ :root { --sk-ink: #233447; --sk-shadow: 3px 4px 0 #2334471f, 0 14px 24px -18px #12273799; --c-person: #ffd9c4; --c-agent: #c2ddff; --c-coord: #e2ccff; --c-script: #ffdd68; --c-app: #a7e8d4; --c-laptop: #d7efff; --c-pink: #ffc9dc; --c-cream: #fffef7; --ok: #2f7a5c; --warn: #b4572e; }
2
+
3
+ .hero-board { min-height: 590px; padding: 128px 84px 172px; }
4
+ .hero-copy { max-width: 940px; }
5
+ .hero h1 { font-size: clamp(38px, 4.1vw, 58px); line-height: 1.08; }
6
+ .hero h1 span { padding-bottom: .06em; }
7
+ .hero .lead { max-width: 600px; }
8
+ .feature-sticker strong { font-size: 18px; }
9
+ .feature-sticker { padding: 13px 19px; gap: 14px; }
10
+ .feature-sticker svg { flex-basis: 30px; width: 30px; height: 30px; }
11
+ .sticker-symbol { font-size: 25px; }
12
+ .sticker-distributed { --sticker-angle: -5deg; left: 4px; top: 24px; }
13
+ .sticker-workflows { --sticker-angle: 4deg; left: auto; right: 4px; top: 30px; bottom: auto; }
14
+ .sticker-agents { --sticker-angle: -3deg; left: 0; top: 262px; bottom: auto; }
15
+ .sticker-clients { --sticker-angle: 4deg; right: 10px; top: 272px; }
16
+ .sticker-setups { --sticker-angle: 3deg; left: 30px; top: auto; bottom: 34px; }
17
+ .sticker-apps { --sticker-angle: -4deg; left: 29%; right: auto; top: auto; bottom: 18px; }
18
+ .sticker-journal { --sticker-angle: 3deg; left: auto; right: 27%; bottom: 26px; }
19
+ .sticker-journal strong { font-size: 18px; }
20
+ .sticker-builds { --sticker-angle: -3deg; right: 22px; bottom: 44px; background: var(--c-pink); border-radius: 16px 4px 16px 4px; }
21
+
22
+ .feature-story .story-intro > p:last-child { max-width: 470px; }
23
+ .story-nav { grid-template-columns: repeat(7, 1fr); gap: 6px; }
24
+ .story-nav a { font-size: 11.5px; padding-inline: 4px; }
25
+ .feature-story[data-pinned] .story-stage { height: clamp(420px, calc(100svh - var(--header-height, 80px) - 60px), 760px); }
26
+ .feature-story[data-pinned] .story-scenes { border: 1.5px solid var(--sk-ink); border-radius: 22px; background: #f7f5fb; box-shadow: 6px 8px 0 #2334471a, 0 30px 60px -40px #16364c80; }
27
+ .story-step .feature-copy h3 { font-size: clamp(30px, 3.1vw, 42px); }
28
+ .story-step .feature-copy > .concept-intro { font-size: 16px; line-height: 1.7; color: var(--muted); }
29
+ .story-step .feature-benefits li { font-size: 17px; }
30
+ .story-step .text-link { margin-top: 22px; }
31
+ .feature-copy .technical p { margin-top: 12px; }
32
+ #ui .feature-benefits li, #distributed .feature-benefits li { color: #277257; }
33
+ #ui .feature-benefits li::before, #distributed .feature-benefits li::before { background-color: #277257; }
34
+
35
+ .story-scene.v2 { --dots: radial-gradient(#23344716 1.1px, transparent 1.5px) 0 0 / 20px 20px; justify-content: flex-start; min-height: 0; padding: 58px 24px 18px; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 20px; box-shadow: 5px 7px 0 #2334471a; overflow: hidden; }
36
+ .story-scene.v2 .scene-heading { inset: 22px 26px auto; color: #43617d; font: 500 10px/1.4 var(--mono); letter-spacing: .1em; }
37
+ .story-scene.v2 .scene-heading > span:last-child { color: #43617d; }
38
+ .story-scene.v2 > figcaption { position: static; margin: 12px 0 0; color: #4d5f72; font-size: 12.5px; line-height: 1.5; text-align: center; }
39
+ .scene-setup { background: var(--dots), linear-gradient(150deg, #fff9e8, #f6efff 70%); }
40
+ .scene-talk { background: var(--dots), linear-gradient(150deg, #eef6ff, #f7f0ff 75%); }
41
+ .scene-app { background: var(--dots), linear-gradient(150deg, #e8f7f1, #f1f4ff 75%); }
42
+ .scene-ts { background: var(--dots), linear-gradient(150deg, #f5efff, #fff7e4 80%); }
43
+ .scene-events { background: var(--dots), linear-gradient(150deg, #fffaec, #eef6ff 80%); }
44
+ .scene-dist { background: var(--dots), linear-gradient(150deg, #fff2ea, #eef3ff 75%); }
45
+ .feature-story[data-pinned] .story-scene.v2 { border: 0; border-radius: 0; box-shadow: none; padding: 58px 24px 16px; }
46
+
47
+ .art-wrap { position: relative; flex: 1 1 auto; min-height: 0; container-type: inline-size; }
48
+ .feature-story[data-pinned] .art-wrap { container-type: size; }
49
+ .art { position: relative; width: 100%; aspect-ratio: 540 / 520; margin-inline: auto; container-type: inline-size; }
50
+ .feature-story:not([data-pinned]) .art { width: min(100%, calc((100svh - 310px) * 540 / 520)); }
51
+ .feature-story[data-pinned] .art { width: min(100cqw, 100cqh * 540 / 520); position: absolute; inset: 0; margin: auto; height: auto; }
52
+ .art-canvas { position: absolute; inset: 0; font-size: clamp(10.5px, 2.45cqw, 14px); line-height: 1.3; }
53
+ .art-lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
54
+ .edge { fill: none; stroke: var(--sk-ink); stroke-width: 1.6; stroke-linecap: round; opacity: .5; }
55
+ .edge.faint { stroke-dasharray: 3 6; opacity: .35; }
56
+ .edge.draw { stroke-dasharray: 1; stroke-dashoffset: 0; }
57
+
58
+ .sk { --x: 270; --y: 260; --r: 0deg; --bg: #fff; position: absolute; left: calc(var(--x) * 100% / 540); top: calc(var(--y) * 100% / 520); translate: -50% -50%; rotate: var(--r); padding: .6em .85em; color: var(--sk-ink); background: var(--bg); border: 1.5px solid var(--sk-ink); border-radius: 5px 14px 5px 14px; box-shadow: var(--sk-shadow); white-space: nowrap; }
59
+ .sk strong { display: block; font-weight: 750; letter-spacing: -.02em; line-height: 1.2; }
60
+ .sk small { display: block; margin-top: .15em; color: #4d5f72; font-size: .8em; line-height: 1.3; }
61
+ .sk.agent { --bg: var(--c-agent); }
62
+ .sk.coord { --bg: var(--c-coord); }
63
+ .sk.script { --bg: var(--c-script); }
64
+ .sk.app { --bg: var(--c-app); border-radius: 14px 5px 14px 5px; }
65
+ .sk.person { --bg: var(--c-person); }
66
+ .sk.note { --bg: var(--c-cream); border-style: dashed; box-shadow: none; }
67
+ .node { display: flex; align-items: center; gap: .6em; }
68
+ .glyph { display: grid; flex: none; place-items: center; width: 2.1em; height: 2.1em; border: 1.5px solid var(--sk-ink); border-radius: 50%; background: #ffffffb0; font: 750 .78em/1 var(--mono); letter-spacing: -.04em; }
69
+ .glyph svg { width: 1.35em; height: 1.35em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
70
+ .glyph.square { border-radius: 6px; }
71
+ .mono { font-family: var(--mono); }
72
+ .tag { display: inline-flex; align-items: center; gap: .35em; padding: .15em .5em; border: 1.2px solid var(--sk-ink); border-radius: 999px; background: #fff; font: 600 .74em/1.4 var(--mono); white-space: nowrap; }
73
+ .tag.ok { background: #d9f3e6; color: #1f5a42; border-color: #1f5a42; }
74
+ .tag.warn { background: #ffe3d3; color: #7c3313; border-color: #7c3313; }
75
+ .tag svg { width: 1.1em; height: 1.1em; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
76
+ .packet { position: absolute; left: 0; top: 0; z-index: 4; translate: -50% -50%; padding: .2em .6em; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 999px; background: #fff; box-shadow: 2px 3px 0 #2334472a; font: 700 .76em/1.35 var(--mono); white-space: nowrap; opacity: 0; pointer-events: none; }
77
+ .packet.dot { width: .9em; height: .9em; padding: 0; }
78
+ .packet.p-person { background: var(--c-person); }
79
+ .packet.p-agent { background: var(--c-agent); }
80
+ .packet.p-coord { background: var(--c-coord); }
81
+ .packet.p-script { background: var(--c-script); }
82
+ .packet.p-app { background: var(--c-app); }
83
+ .packet.p-ok { background: #d9f3e6; }
84
+
85
+ .cursor { position: absolute; left: 100%; top: 100%; z-index: 5; width: 1.6em; height: 1.6em; translate: -20% -10%; pointer-events: none; filter: drop-shadow(1px 2px 0 #23344740); }
86
+ .cursor path { fill: #fff; stroke: var(--sk-ink); stroke-width: 1.6; stroke-linejoin: round; }
87
+
88
+ .code-card { --bg: #1d2b3c; width: 22.5em; padding: 0; color: #e7eef7; border-radius: 12px; box-shadow: 4px 6px 0 #2334472e, 0 20px 36px -20px #12273799; overflow: hidden; }
89
+ .code-tab { display: flex; align-items: center; gap: .55em; padding: .55em .9em; background: #28405a; border-bottom: 1.5px solid var(--sk-ink); font: 600 .82em var(--mono); }
90
+ .code-tab .ts { padding: .05em .35em; border: 1.2px solid var(--sk-ink); border-radius: 4px; background: var(--c-script); color: var(--sk-ink); font-size: .85em; }
91
+ .code-foot { display: flex; justify-content: space-between; padding: .5em .9em .65em; border-top: 1px solid #3b5470; color: #9fb6cd; font: .78em var(--mono); }
92
+ .code-foot strong { display: inline; color: #8fe0bb; }
93
+ .mini-window { width: 13.5em; padding: 0; overflow: hidden; }
94
+ .mini-window-bar { display: flex; align-items: center; gap: .45em; padding: .45em .7em; border-bottom: 1.5px solid var(--sk-ink); background: #ffffffa8; font-size: .8em; font-weight: 700; }
95
+ .mini-window-bar svg { width: 1.2em; height: 1.2em; fill: none; stroke: currentColor; stroke-width: 2; }
96
+ .mini-window-body { display: grid; gap: .35em; padding: .6em .7em .7em; background: #f7fbf9; }
97
+ .mini-row { display: flex; align-items: center; gap: .5em; padding: .3em .45em; border: 1px solid #c3d6cd; border-radius: 5px; background: #fff; font: .72em var(--mono); }
98
+ .mini-row::before { content: ''; width: .8em; height: .8em; border: 1.2px solid #3b705f; border-radius: 3px; background: var(--box, #3b705f); }
99
+ .mini-row.off::before { --box: #fff; }
100
+ .mini-button { justify-self: start; margin-top: .15em; padding: .3em .8em; border-radius: 6px; background: #79638d; color: #fff; font-size: .72em; font-weight: 650; }
101
+ .su-at { position: absolute; left: calc(var(--x) * 100% / 540); top: calc(var(--y) * 100% / 520); translate: -50% -50%; }
102
+ .su-shape { display: grid; place-items: center; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); box-shadow: var(--sk-shadow); }
103
+ .su-shape svg { width: 44%; height: 44%; fill: #fff; stroke: currentColor; stroke-width: 1.6; stroke-linejoin: round; }
104
+ .su-shape.agent { width: calc(84 * 100% / 540); aspect-ratio: 1; border-radius: 50%; background: var(--c-agent); }
105
+ .su-shape.script { width: calc(76 * 100% / 540); aspect-ratio: 1; border-radius: 10px; background: var(--c-script); font: 750 1.3em/1 var(--mono); letter-spacing: -.04em; }
106
+ .su-shape.app { width: calc(130 * 100% / 540); aspect-ratio: 130 / 84; display: flex; flex-direction: column; align-items: stretch; overflow: hidden; border-radius: 12px 4px 12px 4px; background: #f7fbf9; }
107
+ .su-shape.app i { flex: none; height: 26%; border-bottom: 1.5px solid var(--sk-ink); background: var(--c-app); }
108
+ .su-shape.app b { height: .5em; margin: .6em .8em 0; border-radius: 3px; background: #c3d6cd; }
109
+ .su-shape.app b + b { width: 50%; }
110
+ .su-setup { width: calc(100 * 100% / 540); border-radius: 14px; font-size: 1.7em; }
111
+ .su-name { position: absolute; left: calc(334 * 100% / 540); top: calc(70 * 100% / 520); translate: 0 -50%; }
112
+ .su-name b, .su-label b { display: block; font-weight: 750; font-size: 1.05em; }
113
+ .su-name small, .su-label small { display: block; color: #4d5f72; font: .82em/1.4 var(--mono); }
114
+ .su-frame { position: absolute; left: calc(30 * 100% / 540); top: calc(168 * 100% / 520); width: calc(480 * 100% / 540); height: calc(334 * 100% / 520); border: 2px dashed #23344766; border-radius: 18px; }
115
+ .su-frame.built { border-style: solid; border-color: #23344799; background: #ffffff59; }
116
+ .su-frame > span { position: absolute; left: 1.1em; top: .8em; color: #43617d; font: 600 .74em var(--mono); letter-spacing: .08em; text-transform: uppercase; }
117
+ .su-lines path { fill: none; stroke: var(--sk-ink); stroke-width: 1.4; stroke-linecap: round; }
118
+ .su-lines .su-faint { stroke-dasharray: 4 6; opacity: .3; }
119
+ .su-lines .su-lit { stroke-width: 2.2; stroke-dasharray: 1; stroke-dashoffset: 1; opacity: .7; }
120
+ .su-ghost { background: transparent; box-shadow: none; border-style: dashed; }
121
+ .su-label { translate: -50% 0; text-align: center; white-space: nowrap; }
122
+ .su-piece { z-index: 3; }
123
+ .su-calls { position: absolute; left: 50%; top: calc(502 * 100% / 520); translate: -50% -50%; background: #d9f3e6; color: #1f5a42; border-color: #1f5a42; font-size: .9em; }
124
+
125
+ .feature-story[data-pinned] #typescript.story-step { min-height: 560svh; }
126
+ .tsx { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; gap: 1.1em; }
127
+ .tsx-editor, .tsx-callers { overflow: hidden; border: 1.5px solid var(--sk-ink); border-radius: 12px; box-shadow: 4px 5px 0 #2334471f; }
128
+ .tsx-editor { color: #e7eef7; background: #1d2b3c; }
129
+ .tsx-bar { display: flex; align-items: center; gap: .4em; padding: .55em .8em; color: #9fb6cd; border-bottom: 1.5px solid var(--sk-ink); background: #28405a; font: 600 .74em/1.2 var(--mono); }
130
+ .tsx-bar i { width: .7em; height: .7em; border-radius: 50%; background: #ff8f7a; }
131
+ .tsx-bar i:nth-child(2) { background: #ffd166; }
132
+ .tsx-bar i:nth-child(3) { background: #6fcf9f; }
133
+ .tsx-bar span { margin-left: .5em; }
134
+ .tsx pre { margin: 0; font: .8em/1.6 var(--mono); white-space: pre; }
135
+ .tsx-code { padding: .8em 1em .9em; }
136
+ .tsx-code .f { color: #8fd3ff; }
137
+ .tsx-code .p { color: #ffd166; }
138
+ .tsx-code .s { color: #a7e8d4; }
139
+ .tsx-callers { background: #fffdf8; }
140
+ .tsx-tabs { display: flex; gap: .3em; padding: .45em .5em 0; border-bottom: 1.5px solid #23344722; background: #fff; }
141
+ .tsx-tabs span { padding: .35em .75em .45em; border: 1.5px solid transparent; border-bottom: 0; border-radius: 8px 8px 0 0; color: #6a7684; font: 600 .74em/1.2 var(--mono); white-space: nowrap; }
142
+ .tsx-tabs span.on { margin-bottom: -1.5px; color: var(--sk-ink); border-color: #23344733; background: #fffdf8; }
143
+ .tsx-panes { display: grid; }
144
+ .tsx-pane { grid-area: 1 / 1; padding: .8em 1em 1em; color: var(--sk-ink); }
145
+ .tsx-pane .c { color: #7a8a9b; font-style: italic; }
146
+ .tsx-pane .f { color: #1769b1; }
147
+ .tsx-pane .p { color: #8a4b00; }
148
+ .tsx-pane .s { color: #1f7a57; }
149
+ .tsx-pane .k { color: #79638d; font-weight: 700; }
150
+ .tsx-pane .ok { color: #1f7a57; font-weight: 700; }
151
+ .tsx-pane .err { color: #b4572e; text-decoration: underline wavy #d0402b; text-underline-offset: 3px; }
152
+ .tsx-msg { display: inline-block; margin-top: .35em; padding: .1em .55em; border-radius: 6px; background: #ffe3d3; color: #7c3313; font-weight: 700; }
153
+ .tsx-msg.good { background: #d9f3e6; color: #1f5a42; }
154
+ [data-tsx-fix], [data-tsx-fixed] { display: none; }
155
+ .tsx-pane.fixed [data-tsx-typo], .tsx-pane.fixed [data-tsx-error] { display: none; }
156
+ .tsx-pane.fixed [data-tsx-fix], .tsx-pane.fixed [data-tsx-fixed] { display: inline; }
157
+ .tsx-pane.fixed [data-tsx-fixed] { display: inline-block; }
158
+ .tsx-button { display: inline-block; padding: .15em .7em; border: 1.5px solid var(--sk-ink); border-radius: 7px; background: var(--c-app); box-shadow: 2px 2px 0 #2334472a; font-family: var(--font); font-weight: 700; }
159
+ @media (max-width: 700px) {
160
+ .scene-ts .art { aspect-ratio: auto; }
161
+ .scene-ts .art-canvas { position: relative; }
162
+ .tsx { position: relative; }
163
+ .tsx pre { font-size: .68em; }
164
+ }
165
+
166
+ .fork { display: flex; flex-wrap: wrap; align-items: center; gap: .35em; margin-top: .45em; font: 600 .74em var(--mono); }
167
+ .fork span { white-space: nowrap; padding: .1em .45em; border: 1.2px solid var(--sk-ink); border-radius: 999px; background: var(--c-agent); }
168
+ .fork svg { width: 1.2em; height: 1.2em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
169
+ .zz { color: #6a7a8b; }
170
+
171
+ .think { position: absolute; left: 62%; top: -.5em; z-index: 2; display: none; align-items: center; gap: .22em; padding: .38em .5em; border: 1.5px solid var(--sk-ink); border-radius: 999px; background: #fff; box-shadow: 2px 3px 0 #2334471f; }
172
+ .thinking > .think { display: flex; }
173
+ .think i { width: .42em; height: .42em; border-radius: 50%; background: var(--sk-ink); opacity: .25; }
174
+ .think i.on { opacity: 1; }
175
+ .halo { box-shadow: 0 0 0 4px #ffe38a, var(--sk-shadow); }
176
+
177
+ .art[data-art="ui"] .art-canvas, .art[data-art="distributed"] .art-canvas { font-size: clamp(10.5px, 2.9cqw, 17px); }
178
+ .u-outline { fill: none; stroke: var(--sk-ink); stroke-width: 1.6; stroke-dasharray: 1; opacity: .7; }
179
+ .u-wire { fill: none; stroke: var(--sk-ink); stroke-width: 1.5; stroke-dasharray: 4 6; stroke-linecap: round; opacity: .3; }
180
+ .u-wire.lit { stroke-width: 2.2; stroke-dasharray: 1; stroke-dashoffset: 1; opacity: .8; }
181
+ .u-note { --x: 270; --y: 56; --r: -1.5deg; padding: .4em .9em; font-size: .82em; font-weight: 650; line-height: 1.4; text-align: center; }
182
+ .u-actor { position: absolute; left: calc(var(--x) * 100% / 540); top: calc(var(--y) * 100% / 520); translate: -50% -50%; display: grid; justify-items: center; gap: .4em; }
183
+ .u-actor.agent { --x: 58; --y: 262; --bg: var(--c-agent); padding-inline: 1.3em; }
184
+ .u-actor .think { left: calc(50% + .5em); }
185
+ .u-actor.person { --x: 482; --y: 262; --bg: var(--c-person); }
186
+ .u-actor b { font-weight: 750; }
187
+ .u-face { display: grid; place-items: center; width: 4.2em; height: 4.2em; border: 1.5px solid var(--sk-ink); border-radius: 50%; background: var(--bg); box-shadow: var(--sk-shadow); }
188
+ .u-face svg { width: 50%; height: 50%; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
189
+ .u-actor.agent .u-face svg { fill: #fff; stroke-width: 1.5; }
190
+ .u-panel { position: absolute; left: calc(130 * 100% / 540); top: calc(108 * 100% / 520); width: calc(280 * 100% / 540); height: 16.2em; display: flex; flex-direction: column; overflow: hidden; border: 1.5px solid var(--sk-ink); border-radius: 14px; background: #f7fbf9; box-shadow: 5px 7px 0 #2334471f, 0 24px 40px -26px #12273799; }
191
+ .u-bar { display: flex; align-items: center; gap: .45em; padding: .55em .8em; border-bottom: 1.5px solid var(--sk-ink); background: var(--c-app); font-weight: 750; }
192
+ .u-bar svg { width: 1.2em; height: 1.2em; fill: none; stroke: currentColor; stroke-width: 2; }
193
+ .u-count { margin-left: auto; color: #2d6552; font: 700 .8em var(--mono); }
194
+ .u-panel ul { display: grid; gap: .55em; margin: 0; padding: .8em .75em 0; list-style: none; }
195
+ .u-row { display: flex; align-items: center; gap: .55em; min-height: 2.6em; padding: .3em .5em; border: 1.3px solid #c3d6cd; border-radius: 7px; background: #fff; font-weight: 650; white-space: nowrap; }
196
+ .u-row[data-by="agent"] { border-color: #5f89bf; background: #e6f0ff; }
197
+ .u-row[data-by="you"] { border-color: #cf9373; background: #fff0e7; }
198
+ .u-row.flash { box-shadow: 0 0 0 3px #ffe38a; }
199
+ .u-box { display: grid; flex: none; place-items: center; width: 1.2em; height: 1.2em; border: 1.5px solid var(--sk-ink); border-radius: 4px; background: #fff; color: #fff; }
200
+ .u-box svg { width: .95em; height: .95em; fill: none; stroke: currentColor; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; opacity: 0; }
201
+ .u-row[data-by] .u-box { background: var(--sk-ink); }
202
+ .u-row[data-by] .u-box svg { opacity: 1; }
203
+ .u-by { display: none; align-items: center; gap: .25em; margin-left: auto; padding: .08em .45em .08em .2em; border: 1.2px solid var(--sk-ink); border-radius: 999px; font: 700 .7em/1.4 var(--mono); }
204
+ .u-by svg { width: 1.3em; height: 1.3em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
205
+ .u-by.agent { background: var(--c-agent); }
206
+ .u-by.you { background: var(--c-person); }
207
+ .u-row[data-by="agent"] .u-by.agent, .u-row[data-by="you"] .u-by.you { display: inline-flex; }
208
+ .u-foot { display: flex; justify-content: center; margin-top: auto; padding: .7em; }
209
+ .u-go { padding: .35em 1.7em; color: #fff; border: 1.5px solid var(--sk-ink); border-radius: 999px; background: #79638d; box-shadow: 2px 3px 0 #2334472a; font-weight: 750; }
210
+ .u-go.pressed { translate: 1px 2px; background: #5d4a70; box-shadow: none; }
211
+ .u-ptr { position: absolute; left: 0; top: 0; z-index: 5; display: flex; align-items: flex-start; translate: -.3em -.2em; pointer-events: none; opacity: 0; }
212
+ .u-ptr.agent { --bg: var(--c-agent); }
213
+ .u-ptr.person { --bg: var(--c-person); }
214
+ .u-ptr svg { width: 1.7em; height: 1.7em; filter: drop-shadow(1px 2px 0 #23344740); }
215
+ .u-ptr path { fill: var(--bg); stroke: var(--sk-ink); stroke-width: 1.6; stroke-linejoin: round; }
216
+ .u-ptr b { margin: 1.25em 0 0 -.2em; padding: .05em .45em; border: 1.2px solid var(--sk-ink); border-radius: 4px; background: var(--bg); font: 700 .7em/1.4 var(--mono); }
217
+
218
+ .n-faint path { fill: none; stroke: var(--sk-ink); stroke-width: 1.4; stroke-dasharray: 4 6; stroke-linecap: round; opacity: .3; }
219
+ .n-lit { fill: none; stroke: var(--sk-ink); stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; opacity: .75; }
220
+ .n-node { display: flex; align-items: center; gap: .5em; padding: .5em .9em .5em .5em; font-size: 1.08em; }
221
+ .n-node b { display: block; font-weight: 750; line-height: 1.2; }
222
+ .n-node small { margin-top: 0; font-size: .74em; }
223
+ .n-node .glyph { width: 2.2em; height: 2.2em; }
224
+ .n-mail { display: grid; place-items: center; padding: .25em .35em; background: var(--bg, #fff); }
225
+ .n-mail svg { width: 1.35em; height: 1.35em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; }
226
+ .n-mail[data-from="person"] { --bg: var(--c-person); }
227
+ .n-mail[data-from="agent"] { --bg: var(--c-agent); }
228
+ .n-mail[data-from="script"] { --bg: var(--c-script); }
229
+ .n-mail[data-from="app"] { --bg: var(--c-app); }
230
+
231
+ .d-link { fill: none; stroke: var(--sk-ink); stroke-width: 2; stroke-dasharray: 5 6; stroke-linecap: round; opacity: .45; }
232
+ .d-path { fill: none; stroke: none; }
233
+ .d-server { position: absolute; left: calc(170 * 100% / 540); top: calc(136 * 100% / 520); width: calc(200 * 100% / 540); height: calc(232 * 100% / 520); border: 2px solid var(--sk-ink); border-radius: 12px; background: #efe6fb; box-shadow: 5px 7px 0 #2334471f, 0 24px 40px -26px #12273799; }
234
+ .d-server .d-tag { left: -.7em; top: -.95em; translate: none; rotate: -3deg; display: inline-flex; align-items: center; gap: .4em; padding: .3em .75em; font-weight: 750; }
235
+ .d-tag svg, .d-models svg, .d-icon svg, .d-tools svg, .d-task svg, .d-result svg, .d-ok svg { flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
236
+ .d-tag svg { width: 1.25em; height: 1.25em; }
237
+ .d-models { position: absolute; right: .6em; top: .7em; display: inline-flex; align-items: center; gap: .3em; padding: .12em .5em; border: 1.2px solid var(--sk-ink); border-radius: 999px; background: var(--c-pink); font: 700 .72em/1.4 var(--mono); }
238
+ .d-models svg { width: 1.2em; height: 1.2em; }
239
+ .d-models.halo { box-shadow: 0 0 0 3px #ffe38a; }
240
+ .d-run { position: absolute; left: 50%; width: calc(170 * 100% / 200); display: flex; align-items: center; gap: .5em; min-height: 2.9em; padding: .35em .55em; translate: -50% -50%; border: 1.5px solid var(--sk-ink); border-radius: 5px 12px 5px 12px; background: #fff; box-shadow: var(--sk-shadow); }
241
+ .d-run[data-d-run="a"] { top: calc(66 * 100% / 232); }
242
+ .d-run[data-d-run="b"] { top: calc(122 * 100% / 232); }
243
+ .d-run[data-d-run="c"] { top: calc(178 * 100% / 232); }
244
+ .d-run .glyph { width: 1.9em; height: 1.9em; background: var(--c-agent); }
245
+ .d-run b { font-weight: 750; white-space: nowrap; }
246
+ .d-run .think { position: static; margin-left: auto; padding: .3em .4em; box-shadow: none; }
247
+ .d-ok { display: none; place-items: center; width: 1.5em; height: 1.5em; margin-left: auto; color: var(--ok); border: 1.3px solid var(--ok); border-radius: 50%; background: #d9f3e6; }
248
+ .d-ok svg { width: 1em; height: 1em; stroke-width: 3; }
249
+ .d-run.done:not(.thinking) .d-ok { display: grid; }
250
+ .d-client { display: grid; justify-items: center; gap: .05em; padding: .45em .75em .4em; border-radius: 12px 4px 12px 4px; text-align: center; }
251
+ .d-client b { font-weight: 750; }
252
+ .d-client small { margin: 0; font-weight: 600; }
253
+ .d-client.laptop { --bg: var(--c-laptop); }
254
+ .d-client.web { --bg: var(--c-person); }
255
+ .d-client.busy { --bg: var(--c-app); }
256
+ .d-client[data-d-client="l1"] { --x: 84; --y: 66; --r: -2deg; }
257
+ .d-client[data-d-client="l2"] { --x: 456; --y: 66; --r: 2deg; }
258
+ .d-client[data-d-client="web"] { --x: 270; --y: 470; --r: -1deg; }
259
+ .d-icon svg { width: 2em; height: 2em; }
260
+ .d-tools { position: absolute; left: calc(206 * 100% / 540); top: calc(62 * 100% / 520); display: grid; grid-template-columns: auto auto; align-items: center; gap: .35em .3em; padding: .35em .55em .45em; translate: -50% -50%; border: 1.5px dashed var(--sk-ink); border-radius: 6px; background: var(--c-cream); font: 700 .72em/1.3 var(--mono); white-space: nowrap; opacity: 0; }
261
+ .d-tools svg { width: 1.3em; height: 1.3em; }
262
+ .d-tools i { grid-column: 1 / -1; height: .5em; border: 1.2px solid var(--sk-ink); border-radius: 999px; background: linear-gradient(90deg, #6fcf9f calc(var(--done, 0) * 100%), #fff 0); }
263
+ .scene-dist .packet.dot { width: 1.25em; height: 1.25em; }
264
+ .d-task, .d-result { display: grid; place-items: center; width: 2.2em; height: 2.2em; padding: 0; }
265
+ .d-task { background: var(--c-agent); }
266
+ .d-result { color: var(--ok); background: #d9f3e6; }
267
+ .d-task svg, .d-result svg { width: 1.15em; height: 1.15em; stroke-width: 2.2; }
268
+
269
+
270
+
271
+ .team-section { padding-block: 96px 80px; border-bottom: 1px solid var(--line-soft); }
272
+ .team-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; }
273
+ .team-grid h2 { font-size: clamp(30px, 3.4vw, 44px); }
274
+ .team-grid .concept-intro { margin-top: 20px; color: var(--muted); font-size: 16px; }
275
+ .planned-item { display: flex; align-items: center; gap: 12px; margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--line); color: var(--muted); font-size: 16px; font-weight: 600; }
276
+ .planned-item .tag { background: var(--c-cream); border-style: dashed; color: var(--sk-ink); }
277
+ .team-cards { position: relative; display: grid; gap: 22px; padding: 10px 18px; }
278
+ .team-card { position: relative; padding: 18px 22px; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 6px 18px 6px 18px; background: var(--bg); box-shadow: 4px 6px 0 #2334471a, 0 18px 30px -24px #12273799; rotate: var(--r); }
279
+ .team-card header { display: flex; align-items: center; gap: 12px; }
280
+ .team-card header strong { font-size: 20px; font-weight: 750; letter-spacing: -.03em; }
281
+ .team-card header .tag { margin-left: auto; }
282
+ .team-card ul { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 18px; margin: 12px 0 0; padding: 0; list-style: none; font-size: 14px; font-weight: 600; }
283
+ .team-card li { display: flex; align-items: center; gap: 8px; }
284
+ .team-card li svg { flex: none; width: 16px; height: 16px; fill: none; stroke: var(--ok); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
285
+ .team-card .glyph { width: 34px; height: 34px; font-size: 12px; }
286
+ .team-card .glyph svg { width: 19px; height: 19px; }
287
+ .tc-team { --bg: var(--c-agent); --r: -1.5deg; margin-right: 40px; }
288
+ .tc-client { --bg: var(--c-app); --r: 1.5deg; margin-left: 40px; border-radius: 18px 6px 18px 6px; }
289
+ .tc-planned { --bg: var(--c-cream); --r: -1deg; margin-inline: 20px; border-style: dashed; box-shadow: none; }
290
+ .tc-planned ul { grid-template-columns: 1fr; color: var(--muted); }
291
+ .tc-planned li svg { stroke: #8a8096; }
292
+
293
+ .clients-section { padding-block: 90px 96px; }
294
+ .clients-head { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: end; }
295
+ .clients-head h2 { font-size: clamp(30px, 3.4vw, 44px); }
296
+ .clients-head .feature-benefits { margin-top: 0; }
297
+ .shots { display: grid; grid-template-columns: 1.08fr 1fr; gap: 40px; margin-top: 44px; padding: 0 6px 8px; align-items: start; }
298
+ .shot { position: relative; margin: 0; rotate: var(--r); }
299
+ .shot img { display: block; width: 100%; height: auto; border: 1.5px solid var(--sk-ink); border-radius: 12px; background: #fff; box-shadow: 6px 8px 0 #2334471a, 0 30px 50px -34px #12273799; }
300
+ .shot figcaption { position: absolute; left: -10px; top: -18px; display: flex; align-items: center; gap: 9px; margin: 0; padding: 8px 14px; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 5px 14px 5px 14px; background: var(--bg); box-shadow: 3px 4px 0 #2334471f; font-size: 15px; font-weight: 750; letter-spacing: -.02em; rotate: -3deg; }
301
+ .shot figcaption svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
302
+ .shot-web { --r: -.6deg; --bg: var(--c-laptop); }
303
+ .shot-code { --r: .8deg; --bg: var(--c-coord); margin-top: 36px; }
304
+ .shots-note { margin-top: 18px; color: var(--muted); font-size: 12px; }
305
+
306
+ .plugins-section { padding-block: 48px; border-bottom: 1px solid var(--line-soft); }
307
+ .plugins-grid { display: grid; gap: 40px; }
308
+ .plugins-grid > .feature-copy { display: grid; grid-template-columns: 1fr 1fr; column-gap: 72px; align-items: start; }
309
+ .plugins-grid > .feature-copy > .feature-benefits { grid-column: 2; grid-row: 1 / span 3; align-self: center; margin-top: 0; }
310
+ .plugins-grid h2 { font-size: clamp(30px, 3.4vw, 44px); }
311
+ .plugins-grid .feature-copy > .plugins-note { margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--line); font-size: 16px; }
312
+ .plugins-links { display: flex; flex-wrap: wrap; gap: 10px 28px; margin-top: 20px; }
313
+ .plugin-art { --u: calc((100cqi - 40px) / 1120); container-type: inline-size; display: grid; grid-template-columns: 1fr 1fr; gap: 40px; padding: 18px 10px 10px 12px; }
314
+ .pa-panel { position: relative; margin: 0; aspect-ratio: 560 / 360; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 22px; background: radial-gradient(#23344716 1.1px, transparent 1.5px) 0 0 / 20px 20px, linear-gradient(150deg, #eef6ff, #fff7e4 80%); box-shadow: 6px 8px 0 #2334471a, 0 30px 50px -34px #12273799; font-size: clamp(10.5px, calc(13 * var(--u)), 14px); }
315
+ .pa-panel[data-pa="profile"] { background: radial-gradient(#23344716 1.1px, transparent 1.5px) 0 0 / 20px 20px, linear-gradient(150deg, #f5efff, #e8f7f1 80%); }
316
+ .pa-panel > figcaption { position: absolute; left: -12px; top: 0; translate: 0 -50%; z-index: 4; padding: 6px 15px 7px; border: 1.5px solid var(--sk-ink); border-radius: 3px 3px 12px 3px; background: var(--c-script); box-shadow: 3px 4px 0 #23344726; font-size: 14px; font-weight: 750; line-height: 1.3; letter-spacing: -.01em; }
317
+ .pa-panel[data-pa="profile"] > figcaption { background: var(--c-coord); }
318
+ .pa-lines { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; overflow: visible; }
319
+ .pa-lines path { fill: none; stroke: var(--sk-ink); stroke-width: 1.6; stroke-dasharray: 4 5; stroke-linecap: round; opacity: .45; }
320
+ .pa-lines .pa-eject, .pa-lines .pa-eject-tip { stroke-width: 2; stroke-dasharray: none; stroke-linejoin: round; opacity: .6; }
321
+ .pa-lines .pa-eject { stroke-dasharray: 6 6; }
322
+ .pa-base, .pp-server { position: absolute; color: #fff; border: 2px solid var(--sk-ink); border-radius: 14px; background: linear-gradient(#34506c 0 38%, var(--sk-ink) 38%); box-shadow: 5px 6px 0 #2334472a, 0 20px 30px -20px #12273799; }
323
+ .pa-base { left: calc(48 * var(--u)); top: calc(262 * var(--u)); width: calc(340 * var(--u)); height: calc(64 * var(--u)); }
324
+ .pa-slot { position: absolute; left: calc(64 * var(--u)); top: calc(6 * var(--u)); width: calc(108 * var(--u)); height: calc(14 * var(--u)); border-radius: 4px; background: #0f1a26; box-shadow: inset 0 2px 0 #000a; }
325
+ .pa-slot-2 { left: calc(194 * var(--u)); }
326
+ .pa-slot:first-child::after { content: ''; position: absolute; inset: auto -2px calc(-1 * var(--u)) -2px; z-index: 3; height: calc(8 * var(--u)); border-top: 1.5px solid #0f1a26; border-radius: 0 0 4px 4px; background: #34506c; }
327
+ .pa-brand { position: absolute; left: calc(16 * var(--u)); top: 69%; translate: 0 -50%; display: flex; align-items: center; gap: .45em; font-weight: 750; letter-spacing: -.02em; }
328
+ .pa-brand svg { width: 1.9em; height: 1.9em; }
329
+ .pa-leds { position: absolute; right: calc(16 * var(--u)); top: 69%; translate: 0 -50%; display: flex; gap: .4em; }
330
+ .pa-leds i { width: .6em; height: .6em; border-radius: 50%; background: #6fcf9f; box-shadow: 0 0 0 3px #6fcf9f33; }
331
+ .pa-leds i + i { background: #4a6178; box-shadow: none; }
332
+ .pa-cart { position: absolute; width: calc(96 * var(--u)); height: calc(128 * var(--u)); border: 2px solid var(--sk-ink); border-radius: 10px 10px 3px 3px; background: var(--c-agent); box-shadow: 4px 5px 0 #2334472a; }
333
+ .pa-cart-on { left: calc(118 * var(--u)); top: calc(147 * var(--u)); z-index: 2; }
334
+ .pa-cart-off { left: calc(418 * var(--u)); top: calc(96 * var(--u)); z-index: 2; transform: translate(calc(var(--dx, 0) * var(--u)), calc(var(--dy, 0) * var(--u))); border-style: dashed; background: #e6e4ec; box-shadow: none; }
335
+ .pa-grip { position: absolute; left: calc(20 * var(--u)); right: calc(20 * var(--u)); top: calc(9 * var(--u)); height: calc(16 * var(--u)); background: repeating-linear-gradient(90deg, #23344780 0 1.5px, transparent 1.5px calc(8 * var(--u))); }
336
+ .pa-label { position: absolute; left: calc(9 * var(--u)); right: calc(9 * var(--u)); top: calc(32 * var(--u)); bottom: calc(14 * var(--u)); display: grid; align-content: start; gap: .35em; padding: .45em .5em; border: 1.5px solid var(--sk-ink); border-radius: 5px; background: linear-gradient(var(--c-script) 0 calc(10 * var(--u)), #fff 0); font: 700 .78em/1 var(--mono); padding-top: calc(16 * var(--u)); }
337
+ .pa-cart-on .pa-label::after { content: ''; height: 3.4em; background: repeating-linear-gradient(#c9d6e4 0 3px, transparent 3px 9px); }
338
+ .pa-cart-off .pa-label { color: #8a8096; border-color: #8a8096; background: linear-gradient(#d4d0dc 0 calc(10 * var(--u)), #f7f6f9 0); }
339
+ .pa-cart-off .pa-grip { opacity: .5; }
340
+ .pa-ghosts { display: grid; grid-template-columns: 1fr 1fr; gap: .35em .3em; margin-top: .2em; }
341
+ .pa-ghosts i { height: 1.2em; border: 1.2px dashed #9a93a6; border-radius: 999px; background: #ebe8f0; }
342
+ .pa-shadow { position: absolute; left: calc(416 * var(--u)); top: calc(238 * var(--u)); width: calc(100 * var(--u)); height: calc(18 * var(--u)); border-radius: 50%; background: radial-gradient(closest-side, #23344730, transparent); }
343
+ .pa-token { --bg: #fff; position: absolute; left: calc(var(--x) * var(--u)); top: calc(var(--y) * var(--u)); z-index: 4; translate: -50% -50%; padding: .35em .8em; border: 1.5px solid var(--sk-ink); border-radius: 999px; background: var(--bg); box-shadow: 2px 3px 0 #2334472e; font: 700 1.05em/1.2 var(--mono); white-space: nowrap; }
344
+ .t-tools { --x: 64; --y: 142; --bg: var(--c-script); }
345
+ .t-skills { --x: 104; --y: 62; --bg: var(--c-app); }
346
+ .t-prompts { --x: 250; --y: 54; --bg: var(--c-person); }
347
+ .t-ui { --x: 290; --y: 134; --bg: var(--c-pink); }
348
+ .pp-server { left: calc(40 * var(--u)); top: calc(221 * var(--u)); width: calc(232 * var(--u)); height: calc(62 * var(--u)); }
349
+ .pp-card { position: absolute; left: calc(62 * var(--u)); bottom: calc(125 * var(--u)); z-index: 3; width: calc(188 * var(--u)); border: 2px solid var(--sk-ink); border-radius: 6px 16px 6px 16px; background: var(--c-cream); box-shadow: 4px 6px 0 #2334472a, 0 18px 30px -22px #12273799; overflow: hidden; }
350
+ .pp-card header { display: flex; align-items: center; gap: .45em; padding: .45em .75em; border-bottom: 1.5px solid var(--sk-ink); background: var(--c-coord); font: 700 .8em/1.3 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
351
+ .pp-card header svg { width: 1.3em; height: 1.3em; fill: #fff; stroke: var(--sk-ink); stroke-width: 2; stroke-linecap: round; }
352
+ .pp-card ul { display: grid; gap: .4em; margin: 0; padding: .65em .75em .75em; list-style: none; font-weight: 650; line-height: 1.3; }
353
+ .pp-card li { display: flex; align-items: center; gap: .55em; }
354
+ .pp-card li::before { content: ''; flex: none; width: 1.1em; height: 1.1em; border: 1.5px solid var(--sk-ink); border-radius: 4px; background: var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 80% no-repeat; }
355
+ .pp-card li.off { color: #8a8096; }
356
+ .pp-card li.off::before { border-color: #8a8096; background: #fff; }
357
+ .pp-card li:nth-child(4) { margin-top: .15em; padding-top: .45em; border-top: 1.5px dashed #c9c4d5; }
358
+ .pp-laptop { position: absolute; left: calc(var(--x) * var(--u)); top: calc(var(--y) * var(--u)); translate: -50% -50%; width: calc(104 * var(--u)); height: calc(64 * var(--u)); border: 2px solid var(--sk-ink); border-radius: 8px 8px 3px 3px; background: var(--c-laptop); box-shadow: 3px 4px 0 #2334471f; }
359
+ .pp-laptop::after { content: ''; position: absolute; left: calc(-12 * var(--u)); right: calc(-12 * var(--u)); top: 100%; height: calc(10 * var(--u)); border: 2px solid var(--sk-ink); border-radius: 2px 2px 9px 9px; background: #eef2f7; box-shadow: 3px 4px 0 #2334471f; }
360
+ .l1 { --x: 440; --y: 68; }
361
+ .l2 { --x: 440; --y: 180; }
362
+ .l3 { --x: 440; --y: 292; }
363
+ .pp-copy { position: absolute; left: calc(var(--x) * var(--u)); top: calc(var(--y) * var(--u)); z-index: 2; translate: -50% -50%; display: grid; align-content: start; gap: calc(4 * var(--u)); width: calc(50 * var(--u)); height: calc(46 * var(--u)); padding-bottom: calc(6 * var(--u)); border: 1.5px solid var(--sk-ink); border-radius: 3px 8px 3px 8px; background: var(--c-cream); overflow: hidden; }
364
+ .pp-copy b { height: calc(9 * var(--u)); border-bottom: 1.5px solid var(--sk-ink); background: var(--c-coord); }
365
+ .pp-copy i { height: calc(5 * var(--u)); margin-inline: calc(6 * var(--u)); background: linear-gradient(90deg, var(--ok) 0 calc(6 * var(--u)), transparent 0 calc(10 * var(--u)), #c9c4d5 0); }
366
+ .c1 { --x: 440; --y: 68; }
367
+ .c2 { --x: 440; --y: 180; }
368
+ .c3 { --x: 440; --y: 292; }
369
+ @media (max-width: 1000px) { .plugin-art { --u: calc(100cqi / 560); grid-template-columns: 1fr; gap: 52px; width: min(100%, 620px); justify-self: center; } }
370
+ @media (max-width: 800px) { .plugins-grid > .feature-copy { display: block; } .plugins-grid > .feature-copy > .feature-benefits { margin-top: 20px; } }
371
+ @media (max-width: 640px) { .plugin-art { gap: 44px; padding-left: 10px; } .pa-panel { font-size: clamp(8.5px, calc(13 * var(--u)), 14px); } .pa-panel > figcaption { left: -8px; padding: 3px 10px 4px; font-size: 12.5px; } }
372
+ .pa-token, .pp-copy { transform: translate(calc(var(--dx, 0) * var(--u)), calc(var(--dy, 0) * var(--u))) scale(var(--s, 1)); }
373
+
374
+ @media (max-width: 1100px) {
375
+ .hero-board { padding: 80px 30px 60px; }
376
+ .feature-stickers .feature-sticker { inset: auto; }
377
+ .team-grid, .clients-head, .plugins-grid { gap: 40px; }
378
+ }
379
+ @media (max-width: 959px) {
380
+ .story-scene.v2 { min-height: 0; }
381
+ }
382
+ @media (max-width: 800px) {
383
+ .team-grid, .clients-head, .plugins-grid { grid-template-columns: 1fr; }
384
+ .plugin-art { order: 0; }
385
+ .shots { grid-template-columns: 1fr; gap: 44px; }
386
+ .shot-code { margin-top: 0; }
387
+ }
388
+ @media (max-width: 700px) {
389
+ .hero-board { padding: 45px 0 36px; }
390
+ .hero h1 { font-size: clamp(32px, 8.4vw, 44px); }
391
+ .feature-sticker strong { font-size: 14px; line-height: 1.2; }
392
+ .feature-stickers { gap: 10px 8px; }
393
+ .feature-stickers .feature-sticker { width: calc(50% - 4px); padding: 9px 10px; gap: 8px; }
394
+ .feature-sticker svg { width: 22px; height: 22px; flex-basis: 22px; }
395
+ .feature-sticker .sticker-symbol { font-size: 16px; }
396
+ .story-scene.v2 { padding: 50px 12px 14px; }
397
+ .story-scene.v2 .scene-heading { inset: 18px 16px auto; font-size: 9px; }
398
+ .story-scene.v2 > figcaption { font-size: 12px; }
399
+ .team-section, .clients-section, .plugins-section { padding-block: 56px; }
400
+ .team-cards { padding: 10px 4px; }
401
+ .tc-team { margin-right: 10px; }
402
+ .tc-client { margin-left: 10px; }
403
+ .tc-planned { margin-inline: 4px; }
404
+ .team-card ul { grid-template-columns: 1fr; }
405
+ }
406
+
407
+ #setups, [data-story-scene="setups"] { --story-index: 0; }
408
+ #agents, [data-story-scene="agents"] { --story-index: 1; }
409
+ #ui, [data-story-scene="ui"] { --story-index: 2; }
410
+ #typescript, [data-story-scene="typescript"] { --story-index: 3; }
411
+ #events, [data-story-scene="events"] { --story-index: 4; }
412
+ #workflows, [data-story-scene="workflows"] { --story-index: 5; }
413
+ #distributed, [data-story-scene="distributed"] { --story-index: 6; }
414
+ .feature-story[data-pinned] .story-step { min-height: 500svh; align-items: flex-start; }
415
+ .feature-story[data-pinned] .story-step .feature-copy { position: sticky; top: calc(var(--header-height, 80px) + 90px); }
416
+ .feature-benefits li.wink { padding-left: 0; color: var(--muted); font-weight: 500; font-style: italic; }
417
+ .feature-benefits li.wink::before { display: none; }
418
+ .feature-story[data-pinned] #agents.story-step { min-height: 450svh; }
419
+ .feature-story[data-pinned] #setups.story-step { min-height: 700svh; }
420
+ .feature-story[data-pinned] #distributed.story-step { min-height: 441svh; }
421
+ .feature-story[data-pinned] #ui.story-step { min-height: 900svh; }
422
+ .hero { display: flex; align-items: center; min-height: calc(100svh - var(--header-height, 80px)); padding: 48px 0; }
423
+ .hero-board { width: min(1120px, calc(100% - 64px)); }
424
+ @media (min-width: 1101px) { .hero-board { height: min(720px, calc(100svh - var(--header-height, 80px) - 96px)); min-height: 560px; display: flex; flex-direction: column; justify-content: center; padding-block: 110px 140px; } }
425
+ .story-scene.v2 { padding-top: 24px; }
426
+ .story-scene.v2 { padding-top: 70px; }
427
+ .story-scene .scene-heading { inset: 26px 30px auto; font: 650 19px/1.3 Inter, system-ui, -apple-system, sans-serif; letter-spacing: -.02em; text-transform: none; color: var(--sk-ink, #233447); }
428
+ .story-scene > figcaption { font-size: 16px; line-height: 1.5; color: var(--sk-ink, #233447); }
429
+ .hero-logo { display: block; width: clamp(84px, 9vw, 128px); height: auto; margin: 0 auto 22px; color: #233447; filter: drop-shadow(4px 6px 0 #2334471a); }
430
+ .hero-aura::before { top: calc(50% - 420px); }
431
+ @media (min-width: 1101px) { .hero-board { height: min(820px, calc(100svh - var(--header-height, 80px) - 96px)); min-height: 640px; } }
432
+ .feature-story .story-scene .scene-heading { inset: 24px 30px auto; font: 750 clamp(22px, 2vw, 28px)/1.2 Inter, system-ui, -apple-system, sans-serif; letter-spacing: -.03em; color: var(--sk-ink, #233447); }
433
+ .feature-story .story-scene > figcaption { font-size: clamp(16px, 1.3vw, 19px); font-weight: 550; line-height: 1.45; color: var(--sk-ink, #233447); }
434
+ .feature-story .story-scene.v2 { padding-top: 78px; }
435
+ .hero-actions { justify-content: center; margin-top: 34px; }
436
+ .hero-actions .button { gap: 12px; min-height: 52px; padding: 12px 22px; font-size: 16px; border-width: 1.5px; box-shadow: 4px 5px 0 #2233471f; }
437
+ .alpha-note { display: grid; gap: 14px; justify-items: start; margin: 40px 0 56px; padding: 32px 36px; border: 1.5px solid #233447; border-radius: 18px 6px 18px 6px; background: #fff4c7; box-shadow: 5px 7px 0 #2334471a; transform: rotate(-.6deg); }
438
+ .alpha-note h2 { font-size: clamp(24px, 2.4vw, 32px); }
439
+ .alpha-note p { font-size: 17px; color: var(--ink); }
440
+ .alpha-note .button { gap: 10px; }
441
+ @media (max-width: 640px) { .alpha-note { padding: 24px 20px; transform: none; } }
442
+ @media (min-width: 1101px) and (max-height: 780px) { .hero { padding-block: 16px; } .hero-board { min-height: 0; height: calc(100svh - var(--header-height, 80px) - 32px); padding-block: 96px 118px; } .hero-logo { width: 72px; margin-bottom: 12px; } .hero-actions { margin-top: 22px; } }
443
+ .sticker-selfhost { --sticker-angle: 2deg; background: #d9f2c4; }
444
+ .feature-story[data-pinned] .story-stage { top: calc(var(--header-height, 80px) + 56px); }
445
+ html[data-panels="off"] .feature-story[data-pinned] .story-scenes { border: 0; border-radius: 0; background: transparent; box-shadow: none; overflow: visible; }
446
+ html[data-panels="off"] .story-scene, html[data-panels="off"] .story-scene.v2 { background: transparent !important; border-color: transparent !important; box-shadow: none !important; }
447
+
448
+ .remote-section { padding-block: 96px; border-bottom: 1px solid var(--line-soft); }
449
+ .remote-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 72px; align-items: center; }
450
+ .remote-grid h2 { font-size: clamp(30px, 3.4vw, 44px); }
451
+ .remote-art { display: grid; gap: 38px; min-width: 0; padding: 10px 14px 14px 4px; color: var(--sk-ink); }
452
+ .rm-term { min-width: 0; max-width: 100%; rotate: -1deg; color: #e7eef7; border: 2px solid var(--sk-ink); border-radius: 12px; background: #1d2b3c; box-shadow: 5px 7px 0 #2334472e, 0 20px 36px -20px #12273799; overflow: hidden; }
453
+ .rm-bar { display: flex; align-items: center; gap: 6px; padding: 9px 12px; color: #9fb6cd; border-bottom: 1.5px solid var(--sk-ink); background: #28405a; font: 600 12px/1.2 var(--mono); }
454
+ .rm-bar i { width: 10px; height: 10px; border-radius: 50%; background: #ff8f7a; }
455
+ .rm-bar i:nth-child(2) { background: #ffd166; }
456
+ .rm-bar i:nth-child(3) { background: #6fcf9f; }
457
+ .rm-bar span { margin-left: 8px; }
458
+ .rm-term pre { margin: 0; padding: 16px 18px 18px; font: 13.5px/1.7 var(--mono); white-space: pre-wrap; overflow-wrap: anywhere; }
459
+ .rm-cmd { color: #fff; font-weight: 700; overflow-wrap: anywhere; word-break: break-word; }
460
+ .rm-cmd b { margin-right: .35em; color: #6fcf9f; }
461
+ .rm-call { color: var(--c-script); }
462
+ .rm-ok { color: var(--c-app); }
463
+ .rm-dim { color: #8aa2ba; }
464
+ .rm-loop { display: flex; align-items: center; }
465
+ .rm-agent, .rm-host { display: flex; flex: none; align-items: center; gap: 10px; padding: 11px 14px; border: 2px solid var(--sk-ink); box-shadow: 4px 6px 0 #2334471a, 0 18px 30px -24px #12273799; }
466
+ .rm-agent { rotate: -2deg; border-radius: 6px 16px 6px 16px; background: var(--c-agent); }
467
+ .rm-agent strong, .rm-host strong { font-size: 15px; font-weight: 750; letter-spacing: -.02em; white-space: nowrap; }
468
+ .rm-agent .glyph svg { stroke-width: 2.4; }
469
+ .rm-host { rotate: 1.5deg; color: #fff; border-radius: 14px; background: linear-gradient(#34506c 0 38%, var(--sk-ink) 38%); }
470
+ .rm-host > svg { width: 30px; height: 30px; }
471
+ .rm-leds { display: flex; gap: 5px; margin-left: 4px; }
472
+ .rm-leds i { width: 8px; height: 8px; border-radius: 50%; background: #6fcf9f; box-shadow: 0 0 0 3px #6fcf9f33; }
473
+ .rm-leds i + i { background: #4a6178; box-shadow: none; }
474
+ .rm-wires { display: grid; flex: 1; gap: 50px; min-width: 150px; padding-inline: 10px; }
475
+ .rm-wire { position: relative; height: 2px; background: var(--sk-ink); }
476
+ .rm-wire.back { background: repeating-linear-gradient(90deg, var(--sk-ink) 0 6px, transparent 6px 11px); }
477
+ .rm-wire::after { content: ""; position: absolute; top: 50%; right: 0; width: 8px; height: 8px; border-top: 2px solid var(--sk-ink); border-right: 2px solid var(--sk-ink); translate: 0 -50%; rotate: 45deg; }
478
+ .rm-wire.back::after { right: auto; left: 0; rotate: -135deg; }
479
+ .rm-wire em { position: absolute; left: 50%; bottom: calc(100% + 8px); translate: -50% 0; padding: .25em .7em; border: 1.5px solid var(--sk-ink); border-radius: 999px; background: var(--c-script); box-shadow: 2px 3px 0 #2334472e; font: normal 700 11.5px/1.2 var(--mono); white-space: nowrap; }
480
+ .rm-wire.back em { top: calc(100% + 8px); bottom: auto; background: var(--c-app); }
481
+
482
+ .ext-section { padding-block: 90px 96px; border-top: 1px solid var(--line-soft); }
483
+ .ext-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 28px; }
484
+ .ext-head h2 { font-size: clamp(30px, 3.4vw, 44px); }
485
+ .ext-head p { flex: 1; margin: 0; color: var(--muted); font-size: 17px; }
486
+ .ext-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 18px; margin: 40px 0 0; padding: 0; list-style: none; }
487
+ .ext-card { --bg: var(--c-agent); display: flex; align-items: flex-start; gap: 13px; min-width: 0; padding: 14px 16px; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 5px 14px 5px 14px; background: #fff; box-shadow: 3px 4px 0 #2334471a; }
488
+ .ext-card:nth-child(5n+2) { --bg: var(--c-app); }
489
+ .ext-card:nth-child(5n+3) { --bg: var(--c-script); }
490
+ .ext-card:nth-child(5n+4) { --bg: var(--c-person); }
491
+ .ext-card:nth-child(5n+5) { --bg: var(--c-coord); }
492
+ .ext-card .glyph { width: 36px; height: 36px; background: var(--bg); font-size: 12px; }
493
+ .ext-card .glyph svg { width: 20px; height: 20px; }
494
+ .ext-card > div { min-width: 0; }
495
+ .ext-card strong { display: block; font-size: 15px; font-weight: 750; letter-spacing: -.02em; line-height: 1.3; }
496
+ .ext-card p { margin: 3px 0 0; color: var(--muted); font-size: 13.5px; line-height: 1.45; }
497
+ .ext-card small { display: block; margin-top: 6px; color: #7a8796; font: 11px/1.3 var(--mono); overflow-wrap: anywhere; }
498
+
499
+ @media (max-width: 1100px) {
500
+ .remote-grid { gap: 40px; }
501
+ }
502
+ @media (max-width: 800px) {
503
+ .remote-grid { grid-template-columns: minmax(0, 1fr); }
504
+ .ext-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
505
+ }
506
+ @media (max-width: 700px) {
507
+ .remote-section, .ext-section { padding-block: 56px; }
508
+ .rm-term pre { padding: 12px 14px 14px; font-size: 12px; word-break: break-word; }
509
+ .rm-loop { flex-direction: column; }
510
+ .rm-wires { display: flex; flex: none; justify-content: center; gap: 44px; height: 92px; min-width: 0; padding: 14px 0; }
511
+ .rm-wire { align-self: stretch; width: 2px; height: auto; }
512
+ .rm-wire em { left: auto; right: calc(100% + 12px); top: 50%; bottom: auto; translate: 0 -50%; }
513
+ .rm-wire.back em { left: calc(100% + 12px); right: auto; }
514
+ .rm-wire.back { background: repeating-linear-gradient(180deg, var(--sk-ink) 0 6px, transparent 6px 11px); }
515
+ .rm-wire::after { top: auto; right: auto; bottom: 0; left: 50%; translate: -50% 0; rotate: 135deg; }
516
+ .rm-wire.back::after { top: 0; bottom: auto; rotate: -45deg; }
517
+ .ext-head p { flex-basis: 100%; }
518
+ .ext-grid { gap: 12px; margin-top: 28px; }
519
+ .ext-card { flex-direction: column; gap: 9px; padding: 12px; }
520
+ .ext-card p { font-size: 13px; }
521
+ }
522
+ .feature-story[data-pinned] .story-scenes { inset: 0; }
523
+ .feature-story[data-pinned] .story-stage { top: calc(var(--header-height, 80px) + 84px); }
524
+ .feature-story[data-pinned] .story-progress { display: none; }
525
+ .feature-story[data-pinned] .story-nav { position: fixed; z-index: 4; top: var(--header-height, 80px); bottom: auto; left: 0; right: 0; display: flex; justify-content: center; gap: 8px; padding: 10px 16px; background: #ffffffeb; backdrop-filter: blur(14px); border-bottom: 1px solid #e3ecf2; opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity .2s, transform .2s, visibility .2s; }
526
+ html.story-active .feature-story[data-pinned] .story-nav { opacity: 1; visibility: visible; transform: none; }
527
+ .feature-story[data-pinned] .story-nav a { min-height: 36px; padding: 6px 16px; font-size: 14px; font-weight: 600; color: #34303d; border-radius: 999px; }
528
+ .feature-story[data-pinned] .story-nav a[aria-current] { color: #fff; background: #233447; border-color: #233447; }
529
+ .feature-story[data-pinned] .story-nav { padding: 6px 16px; }
530
+ .feature-story[data-pinned] .story-nav a { min-height: 32px; padding: 4px 16px; }
531
+ .feature-story[data-pinned] .story-stage { top: calc(var(--header-height, 80px) + 60px); }
532
+ .feature-story .story-scene .scene-heading { justify-content: center; text-align: center; }
533
+ .feature-story[data-pinned] { --stage-top: calc(var(--header-height, 80px) + 60px + max(0px, (100svh - var(--header-height, 80px) - 60px - var(--preview-stage-height, 650px)) / 2)); }
534
+ .feature-story[data-pinned] .story-stage { top: var(--stage-top); }
535
+ .feature-story[data-pinned] .story-step .feature-copy { top: calc(var(--stage-top) + 40px); }
536
+ .feature-story[data-pinned] .story-step .feature-copy { top: calc(var(--stage-top) + max(40px, var(--preview-stage-height, 650px) / 2 - 200px)); }
537
+ .tc-team, .tc-client, .tc-planned { --r: 0deg; margin-inline: 0; }
538
+ .alpha-note { transform: none; }
539
+ html { scroll-padding-top: calc(var(--header-height, 80px) + 64px); }
540
+ .subnav { position: sticky; z-index: 19; top: var(--header-height, 80px); display: flex; justify-content: center; gap: 6px; padding: 7px 16px; overflow-x: auto; scrollbar-width: none; background: #ffffffeb; backdrop-filter: blur(14px); border-bottom: 1px solid #e3ecf2; }
541
+ .subnav::-webkit-scrollbar { display: none; }
542
+ .subnav a { flex: none; display: inline-flex; align-items: center; min-height: 32px; padding: 4px 14px; border: 1px solid transparent; border-radius: 999px; color: #34303d; font: 600 14px/1 Inter, system-ui, -apple-system, sans-serif; text-decoration: none; white-space: nowrap; }
543
+ .subnav a:hover { background: #eef4fb; }
544
+ .subnav a[aria-current] { color: #fff; background: #233447; border-color: #233447; }
545
+ .feature-story .story-nav, .feature-story[data-pinned] .story-nav { display: none !important; }
546
+ @media (max-width: 1100px) { .subnav { justify-content: flex-start; } }
547
+ @media (max-width: 640px) { .subnav { padding: 6px 10px; } .subnav a { min-height: 30px; padding: 4px 11px; font-size: 13px; } }
548
+ :root { --subnav-h: 47px; }
549
+ .hero { min-height: calc(100svh - var(--header-height, 80px) - var(--subnav-h)); }
550
+ @media (min-width: 1101px) { .hero-board { height: min(820px, calc(100svh - var(--header-height, 80px) - var(--subnav-h) - 96px)); } }
551
+ @media (min-width: 1101px) and (max-height: 780px) { .hero-board { height: calc(100svh - var(--header-height, 80px) - var(--subnav-h) - 32px); } }
552
+ @media (max-width: 640px) { :root { --subnav-h: 43px; } }
553
+ @media (min-width: 960px) and (min-height: 700px) {
554
+ html { scroll-snap-type: y proximity; }
555
+ #team, #plugins, #remote, #clients, #extensions { display: flex; flex-direction: column; justify-content: center; min-height: calc(100svh - var(--header-height, 80px) - var(--subnav-h)); scroll-snap-align: start; scroll-snap-stop: always; }
556
+ }
557
+ .start-cta { display: grid; justify-items: center; gap: 16px; margin: 72px 0 24px; padding: 56px 32px; text-align: center; border: 1.5px solid #233447; border-radius: 20px; background: linear-gradient(145deg, #f4f9ff, #e8f1fb); box-shadow: 5px 7px 0 #2334471a; }
558
+ .start-cta h2 { font-size: clamp(30px, 3.4vw, 44px); }
559
+ .start-cta p { max-width: 560px; font-size: 18px; color: var(--muted); }
560
+ .start-cta .actions { justify-content: center; margin-top: 8px; }
561
+ .start-cta .button { gap: 12px; min-height: 52px; padding: 12px 22px; font-size: 16px; }
562
+ @media (max-width: 640px) { .start-cta { margin-top: 40px; padding: 36px 20px; } .start-cta p { font-size: 16px; } }
563
+ .subnav { gap: 2px; padding-block: 6px; }
564
+ .subnav a { min-height: 28px; padding: 3px 11px; font-size: 12.5px; font-weight: 550; }
565
+ @media (max-width: 640px) { .subnav a { min-height: 26px; padding: 3px 9px; font-size: 12px; } }
566
+ :root { --subnav-h: 41px; }
567
+ @media (max-width: 640px) { :root { --subnav-h: 39px; } }
568
+ .subnav { border-bottom: 0; }
569
+ .subnav-inner { display: inline-flex; flex: none; gap: 2px; margin-inline: auto; padding: 0 22px 6px; border-bottom: 1px solid #dfe7ef; }
570
+ .subnav { padding-bottom: 0; }
571
+ @media (max-width: 1100px) { .subnav-inner { margin-inline: 0; } }
572
+ .closing { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: start; padding: 72px 0 48px; }
573
+ .closing .start-cta, .closing .alpha-note { margin: 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; transform: none; justify-items: start; text-align: left; }
574
+ .closing .start-cta .actions { justify-content: flex-start; }
575
+ .closing h2 { font-size: clamp(26px, 2.6vw, 34px); }
576
+ .closing p { font-size: 17px; color: var(--muted); }
577
+ .closing .start-cta + .alpha-note { padding-left: 64px; border-left: 1px solid var(--line-soft); }
578
+ @media (max-width: 860px) { .closing { grid-template-columns: 1fr; gap: 40px; } .closing .start-cta + .alpha-note { padding: 40px 0 0; border-left: 0; border-top: 1px solid var(--line-soft); } }
579
+ .site-footer { margin-top: 24px; padding: 72px 0 32px; background: #172c41; color: #b8c9d9; }
580
+ .footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 40px; padding-bottom: 48px; border-bottom: 1px solid #2d4560; }
581
+ .footer-brand { display: inline-flex; align-items: center; gap: 12px; color: #fff; font-size: 24px; font-weight: 750; letter-spacing: -.04em; text-decoration: none; }
582
+ .footer-logo { width: 40px; height: 40px; color: #fff; }
583
+ .footer-about p { max-width: 300px; margin-top: 14px; font-size: 15px; line-height: 1.6; }
584
+ .footer-col { display: grid; align-content: start; gap: 10px; }
585
+ .footer-col h3 { margin-bottom: 4px; color: #fff; font-size: 13px; letter-spacing: 0; }
586
+ .footer-col a { color: #b8c9d9; font-size: 14px; text-decoration: none; }
587
+ .footer-col a:hover { color: #fff; text-decoration: underline; }
588
+ .footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-top: 24px; font-size: 13px; }
589
+ .footer-bottom a { color: #dbe6f2; }
590
+ @media (max-width: 860px) { .footer-grid { grid-template-columns: 1fr 1fr; } .footer-about { grid-column: 1 / -1; } }
591
+ .remote-art { grid-template-columns: minmax(0, 1fr); } .rm-term pre { overflow-x: auto; }
592
+ @media (max-width: 1100px) { .remote-grid { grid-template-columns: minmax(0, 1fr); } .remote-art { max-width: 640px; } }
593
+ html { scroll-behavior: auto !important; scroll-snap-type: none !important; }
594
+ #team, #plugins, #remote, #clients, #extensions { scroll-snap-align: none; scroll-snap-stop: normal; }
595
+
596
+ .dm-section { --dm-server: #ece4fa; padding-block: 0 24px; border-bottom: 1px solid var(--line-soft); }
597
+ .dm-sprite { position: absolute; width: 0; height: 0; }
598
+ .dm-head { padding: 120px 0 64px; text-align: center; }
599
+ .dm-head .eyebrow { justify-content: center; }
600
+ .dm-head h2 { font-size: clamp(30px, 3.4vw, 44px); }
601
+ .dm-lead { max-width: 640px; margin: 20px auto 0; color: var(--muted); font-size: 18px; line-height: 1.7; }
602
+
603
+ .dm-matrix-wrap { padding: 0 0 72px; }
604
+ .dm-matrix-card { padding: 26px 28px 22px; border: 1.5px solid var(--sk-ink); border-radius: 20px; background: #fff; box-shadow: 5px 7px 0 #2334471a; overflow-x: auto; }
605
+ .dm-matrix-card h3 { font-size: 22px; }
606
+ .dm-matrix-card > p { margin-top: 6px; color: var(--muted); font-size: 14px; }
607
+ .dm-matrix { width: 100%; min-width: 680px; margin-top: 18px; border-collapse: collapse; font-size: 14px; }
608
+ .dm-matrix th, .dm-matrix td { padding: 10px 12px; text-align: left; vertical-align: middle; border-top: 1px solid var(--line-soft); }
609
+ .dm-matrix thead th { border-top: 0; color: #43617d; font: 600 11px/1.4 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
610
+ .dm-matrix tbody th { font-weight: 650; color: var(--ink); white-space: nowrap; }
611
+ .dm-matrix td small { display: block; margin-top: 3px; color: #6a7684; font-size: 12px; }
612
+ .dm-chip { display: inline-flex; align-items: center; gap: 6px; padding: 2px 10px; border: 1.2px solid var(--sk-ink); border-radius: 999px; font: 600 12px/1.6 var(--mono); white-space: nowrap; }
613
+ .dm-chip::before { content: ''; width: 7px; height: 7px; border-radius: 2px; background: var(--sk-ink); opacity: .55; }
614
+ .dm-chip.dm-l { background: var(--c-laptop); }
615
+ .dm-chip.dm-s { background: var(--dm-server); }
616
+ .dm-chip.dm-n { background: #fff; border-style: dashed; }
617
+ .dm-chip.dm-n::before { display: none; }
618
+
619
+ .dm-story { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; padding-block: 24px 72px; }
620
+ .dm-steps, .dm-stage { display: contents; }
621
+ .dm-step { grid-row: calc(var(--i) * 2 + 1); padding-top: 40px; }
622
+ .dm-story[data-pinned] { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); column-gap: 64px; align-items: start; padding-block: 0 40px; }
623
+ .dm-story[data-pinned] .dm-steps { display: block; grid-area: 1 / 1; }
624
+ .dm-story[data-pinned] .dm-step { display: flex; align-items: center; min-height: max(80svh, calc(var(--dm-stage-h, 520px) + 80px)); padding-block: 48px; }
625
+ .dm-story[data-pinned] .dm-stage { display: grid; grid-area: 1 / 2; position: sticky; top: calc(var(--header-height, 80px) + max(56px, (100svh - var(--header-height, 80px) - var(--dm-stage-h, 520px)) / 2)); }
626
+ .dm-live { display: none; }
627
+ .dm-story[data-pinned] .dm-live { display: block; }
628
+ .dm-story[data-pinned] .dm-static { display: none; }
629
+ .dm-step .eyebrow { margin-bottom: 14px; }
630
+ .dm-step h3 { font-size: clamp(28px, 3vw, 38px); }
631
+ .dm-step .feature-benefits { margin-top: 24px; }
632
+ .dm-step .feature-benefits li { color: #277257; font-size: 17px; }
633
+ .dm-step .feature-benefits li::before { background-color: #277257; }
634
+ .dm-when { margin-top: 22px; padding: 12px 16px; border-left: 3px solid var(--accent); border-radius: 0 10px 10px 0; background: #fff; color: var(--muted); font-size: 15px; line-height: 1.55; }
635
+ .dm-when b { color: var(--ink); font-weight: 650; }
636
+ .dm-cmd { margin-top: 18px; padding: 12px 16px; border-radius: 10px; background: #233447; color: #e8eef5; font: 13px/1.7 var(--mono); white-space: pre-wrap; overflow-wrap: anywhere; }
637
+ .dm-prompt { color: #8fb3d6; user-select: none; }
638
+ .dm-comment { color: #8a9bb0; }
639
+ .dm-step .text-link { margin-top: 20px; }
640
+ .dm-step .text-link svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
641
+
642
+
643
+ .dm-dg { position: relative; width: 100%; aspect-ratio: 560 / 380; container-type: inline-size; }
644
+ .dm-dg-in { position: absolute; inset: 0; font-size: 2.3cqw; line-height: 1.3; }
645
+ .dm-lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
646
+ .dm-ln { fill: none; stroke: var(--sk-ink); stroke-width: 1.6; stroke-linecap: round; opacity: .55; vector-effect: non-scaling-stroke; }
647
+ .dm-ln.dm-flow { stroke-dasharray: 5 7; opacity: .75; animation: dm-dash 1.1s linear infinite; }
648
+ @keyframes dm-dash { to { stroke-dashoffset: -24; } }
649
+
650
+
651
+ .dm-lbl { position: absolute; z-index: 3; left: calc(var(--x) * 100% / 560); top: calc(var(--y) * 100% / 380); translate: -50% -50%; padding: .12em .6em; border: 1.2px solid var(--sk-ink); border-radius: 999px; background: #fff; font: 600 .74em/1.45 var(--mono); white-space: nowrap; }
652
+ .dm-lbl.dm-agent { background: var(--c-agent); }
653
+ .dm-lbl.dm-ok { background: #d9f3e6; color: #1f5a42; border-color: #1f5a42; }
654
+ .dm-lbl.dm-lock { background: #ffe3d3; color: #7c3313; border-color: #7c3313; }
655
+ .dm-live.dm-ready .dm-move { transition: left .6s ease, top .6s ease, opacity .3s, visibility .3s; }
656
+ .dm-live .dm-ln.dm-flow { animation: dm-dash 1.1s linear infinite, dm-fade .5s ease .35s both; }
657
+ .dm-live .dm-lbl { animation: dm-fade .5s ease .35s both; }
658
+ @keyframes dm-fade { from { opacity: 0; } }
659
+ @media (prefers-reduced-motion: reduce) { .dm-ln.dm-flow, .dm-live .dm-ln.dm-flow, .dm-live .dm-lbl { animation: none; } .dm-live.dm-ready .dm-move { transition: none; } }
660
+
661
+ @media (max-width: 980px) {
662
+ }
663
+ @media (max-width: 640px) {
664
+ .dm-head { padding-top: 64px; }
665
+ .dm-matrix-card { padding: 20px 16px; }
666
+ }
667
+ .subnav-toggle { display: none; }
668
+ .subnav[data-compact] { justify-content: center; overflow: visible; padding-bottom: 6px; border-bottom: 1px solid #dfe7ef; }
669
+ .subnav[data-compact] .subnav-toggle { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 3px 10px 3px 14px; border: 1px solid #233447; border-radius: 999px; background: #233447; color: #fff; font: 550 12.5px/1 Inter, system-ui, -apple-system, sans-serif; cursor: pointer; }
670
+ .subnav-toggle svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s; }
671
+ .subnav[data-open] .subnav-toggle svg { transform: scaleY(-1); }
672
+ .subnav[data-compact] .subnav-inner { display: none; }
673
+ .subnav[data-compact][data-open] .subnav-inner { position: absolute; top: 100%; left: 0; right: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 4px; margin: 0; padding: 10px 16px 14px; border-bottom: 1px solid #dfe7ef; background: #fff; box-shadow: 0 18px 30px -24px #12273799; }
674
+ .subnav[data-compact][data-open] .subnav-inner a { justify-content: center; min-height: 34px; font-size: 13.5px; }
675
+ .dm-story[data-pinned] .dm-dg { width: min(100%, calc((100svh - var(--header-height, 80px) - var(--subnav-h, 41px) - 150px) * 560 / 380)); margin-inline: auto; }
676
+ @media (max-width: 720px) {
677
+ :root { --subnav-h: 0px; }
678
+ .subnav { display: none; }
679
+ html[data-menu-open] .subnav { display: block; padding: 2px 18px 14px; border-bottom: 1px solid #dfe7ef; box-shadow: 0 18px 30px -24px #12273799; background: #fff; }
680
+ html[data-menu-open] .subnav .subnav-toggle { display: none; }
681
+ html[data-menu-open] .subnav .subnav-inner { position: static; display: grid; grid-template-columns: 1fr 1fr; gap: 4px; margin: 0; padding: 0; border: 0; background: none; box-shadow: none; }
682
+ html[data-menu-open] .subnav .subnav-inner a { justify-content: flex-start; min-height: 36px; font-size: 14px; }
683
+ }
684
+ .ua-section { padding-block: 88px 80px; border-bottom: 1px solid var(--line-soft); background: radial-gradient(ellipse at 80% 40%, #eef3ff 0, transparent 60%); }
685
+ .ua-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 64px; align-items: center; }
686
+ .ua-grid h2 { font-size: clamp(30px, 3.4vw, 44px); }
687
+ .ua-lead { margin-top: 18px; color: var(--muted); font-size: 17px; line-height: 1.7; }
688
+ .ua-grid .feature-benefits { margin-top: 22px; }
689
+ .ua-grid .feature-benefits li { font-size: 17px; }
690
+ .ua-links { display: flex; flex-wrap: wrap; gap: 12px 28px; margin-top: 24px; }
691
+ .ua-term { min-width: 0; color: #e7eef7; border: 2px solid var(--sk-ink); border-radius: 12px; background: #1d2b3c; box-shadow: 5px 7px 0 #2334472e, 0 20px 36px -20px #12273799; overflow: hidden; }
692
+ .ua-bar { display: flex; align-items: center; gap: 6px; padding: 9px 12px; color: #9fb6cd; border-bottom: 1.5px solid var(--sk-ink); background: #28405a; font: 600 12px/1.2 var(--mono); }
693
+ .ua-bar i { width: 10px; height: 10px; border-radius: 50%; background: #ff8f7a; }
694
+ .ua-bar i:nth-child(2) { background: #ffd166; }
695
+ .ua-bar i:nth-child(3) { background: #6fcf9f; }
696
+ .ua-bar span { margin-left: 8px; }
697
+ .ua-term pre { margin: 0; padding: 16px 18px 18px; font: 13px/1.7 var(--mono); white-space: pre-wrap; overflow-wrap: anywhere; }
698
+ .ua-cmd { color: #fff; font-weight: 700; }
699
+ .ua-cmd b { margin-right: .35em; color: #6fcf9f; }
700
+ .ua-out { color: var(--c-app); }
701
+ .ua-note { color: #8a9bb0; }
702
+ @media (max-width: 980px) { .ua-grid { grid-template-columns: minmax(0, 1fr); gap: 36px; } }
703
+ @media (max-width: 640px) { .ua-section { padding-block: 56px; } .ua-term pre { font-size: 12px; padding: 14px; } }
704
+
705
+ .dm-scene { grid-row: calc(var(--i) * 2 + 2); position: relative; margin: 0; }
706
+ .dm-scene-heading { margin-bottom: 6px; color: #43617d; font: 500 10px/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; }
707
+ .dm-scene figcaption { margin-top: 6px; color: #4d5f72; font-size: 14px; line-height: 1.5; text-align: center; }
708
+ .dm-dg-in::before { content: ''; position: absolute; left: 50%; top: 4%; bottom: 2%; border-left: 1.5px dashed #23344740; }
709
+ .dm-machine { position: absolute; top: 0; width: 50%; display: grid; justify-items: center; gap: .2em; transition: opacity .4s; }
710
+ .dm-machine.dm-laptop { left: 0; }
711
+ .dm-machine.dm-server { right: 0; }
712
+ .dm-machine.dm-idle { opacity: .35; }
713
+ .dm-machine-label { display: inline-flex; align-items: center; gap: .45em; color: var(--sk-ink); font: 700 1em/1.3 var(--mono); }
714
+ .dm-machine-label svg { width: 1.3em; height: 1.3em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
715
+ .dm-machine-foot { color: #6a7684; font: 600 .78em/1.3 var(--mono); }
716
+ .dm-node { --bg: #fff; position: absolute; z-index: 2; left: calc(var(--x) * 100% / 560); top: calc(var(--y) * 100% / 380); translate: -1.25em -50%; display: flex; align-items: center; gap: .6em; color: var(--sk-ink); white-space: nowrap; }
717
+ .dm-node.dm-left { flex-direction: row-reverse; translate: calc(-100% + 1.25em) -50%; text-align: right; }
718
+ .dm-node strong { display: block; font-weight: 750; letter-spacing: -.02em; line-height: 1.2; }
719
+ .dm-node small { display: block; color: #4d5f72; font-size: .8em; line-height: 1.3; }
720
+ .dm-node.dm-agent { --bg: var(--c-agent); }
721
+ .dm-node.dm-app { --bg: var(--c-app); }
722
+ .dm-node.dm-script { --bg: var(--c-script); }
723
+ .dm-node.dm-coord { --bg: var(--c-coord); }
724
+ .dm-node.dm-cream { --bg: var(--c-cream); }
725
+ .dm-node.dm-gone { visibility: hidden; opacity: 0; }
726
+ .dm-glyph { display: grid; flex: none; place-items: center; width: 2.5em; height: 2.5em; border: 1.5px solid var(--sk-ink); border-radius: 50%; background: var(--bg); }
727
+ .dm-glyph svg { width: 1.35em; height: 1.35em; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
728
+ .dm-node.dm-note .dm-glyph { border-style: dashed; background: #fff; }
729
+ .dm-node.dm-note { opacity: .75; }
730
+ .dm-lbl { padding: .1em .45em; border: 0; background: #f3f2f7; color: #43617d; }
731
+ .dm-stepper { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 30px; margin-bottom: 36px; padding: 0; list-style: none; }
732
+ .dm-stepper button { padding: 4px 0; border: 0; border-bottom: 2px solid transparent; background: none; color: #7a8595; font: 600 13px/1.3 var(--font, Inter, system-ui, sans-serif); cursor: pointer; }
733
+ .dm-stepper button:hover { color: var(--sk-ink); }
734
+ .dm-stepper button[aria-current] { color: var(--sk-ink); border-bottom-color: var(--sk-ink); }
735
+ .dm-live .dm-scene-heading { display: none; }
736
+ @media (max-width: 1100px) { .feature-stickers .feature-sticker { --sticker-angle: 0deg; border-radius: 12px; } }
737
+ @media (max-width: 700px) { .dm-cmd { font-size: 12px; padding-inline: 12px; } }
738
+ @media (max-width: 920px) {
739
+ .dm-matrix-card { overflow: visible; }
740
+ .dm-matrix, .dm-matrix tbody, .dm-matrix tr, .dm-matrix th, .dm-matrix td { display: block; min-width: 0; }
741
+ .dm-matrix thead { display: none; }
742
+ .dm-matrix tr { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 12px; padding: 14px 0; border-top: 1px solid var(--line-soft); }
743
+ .dm-matrix tbody th { grid-column: 1 / -1; padding: 0; border: 0; }
744
+ .dm-matrix td { padding: 0; border: 0; }
745
+ .dm-matrix td::before { content: attr(data-label); display: block; margin-bottom: 3px; color: #6a7684; font: 600 10px/1.3 var(--mono); letter-spacing: .06em; text-transform: uppercase; }
746
+ }
747
+
748
+ .scene-journal { background: var(--dots), linear-gradient(150deg, #fffaec, #eef6ff 80%); }
749
+ .jr { position: absolute; inset: 0; display: flex; flex-direction: column; overflow: hidden; color: var(--sk-ink); border: 1.5px solid var(--sk-ink); border-radius: 16px; background: #fffdf8; box-shadow: 4px 6px 0 #2334471a; }
750
+ .jr-head { display: flex; align-items: center; gap: .8em; padding: .8em 1.2em; border-bottom: 1.5px solid #23344722; background: #fff; color: #43617d; font: 600 .78em/1.4 var(--mono); }
751
+ .jr-head b { color: var(--sk-ink); }
752
+ .jr-live { display: inline-flex; align-items: center; gap: .45em; margin-left: auto; padding: .1em .75em; border-radius: 999px; background: #d9f3e6; color: #1f5a42; }
753
+ .jr-live::before { content: ''; width: .55em; height: .55em; border-radius: 50%; background: #2f7a5c; }
754
+ .jr-cols, .jr-row { display: grid; grid-template-columns: 2.4em 5.6em 7.6em minmax(0, 1fr); gap: .8em; }
755
+ .jr-cols { padding: .5em 1.2em; border-bottom: 1px dashed #23344722; color: #8a97a6; font: 600 .66em/1.4 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
756
+ .jr-cols { grid-template-columns: 2.69em 6.28em 8.52em minmax(0, 1fr); gap: .9em; }
757
+ .jr-view { position: relative; flex: 1; overflow: hidden; -webkit-mask-image: linear-gradient(transparent 0, #000 4em); mask-image: linear-gradient(transparent 0, #000 4em); }
758
+ .jr-list { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: 0 0 .8em; list-style: none; }
759
+ .jr-row { align-items: baseline; padding: .45em 1.2em .45em calc(1.2em - 3px); border-left: 3px solid transparent; font: .74em/1.45 var(--mono); opacity: 0; }
760
+ .jr-row.on { opacity: 1; }
761
+ .jr-seq, .jr-time { color: #8a97a6; }
762
+ .jr-who { justify-self: start; padding: 0 .55em; border: 1.2px solid var(--sk-ink); border-radius: 999px; background: var(--c-agent); font-weight: 700; white-space: nowrap; }
763
+ .jr-who.jr-script { background: var(--c-script); }
764
+ .jr-who.jr-lead { background: var(--c-coord); }
765
+ .jr-what { min-width: 0; color: #4d5f72; }
766
+ .jr-what b { color: var(--sk-ink); }
767
+ .jr-cause { display: inline-block; margin-left: .5em; padding: 0 .5em; border-radius: 999px; background: #285bd71a; color: #285bd7; font-weight: 700; white-space: nowrap; }
768
+ .jr-row.jr-caused { border-left-color: #285bd7; background: #285bd70d; }
769
+ .jr-row.jr-warn { border-left-color: #b4572e; background: #b4572e0d; }
770
+ .jr-row.jr-warn b { color: #b4572e; }
771
+ .jr-row.jr-lit { background: #ffdd6855; }
772
+ .jr-gap { display: block; padding: .8em 1.2em; color: #8a97a6; font-style: italic; text-align: center; }
773
+ .jr-foot { min-height: 3.2em; padding: .7em 1.2em; border-top: 1.5px solid #23344722; background: #fff; color: #4d5f72; font-size: .82em; line-height: 1.45; }
774
+ .jr-foot b { color: var(--sk-ink); }
775
+ @container (max-width: 470px) { .jr-time { display: none; } .jr-cols, .jr-row { grid-template-columns: 2.4em 7.6em minmax(0, 1fr); } .jr-cols { grid-template-columns: 2.69em 8.52em minmax(0, 1fr); } }
776
+ @media (max-width: 700px) { .scene-journal .art { aspect-ratio: 540 / 600; } }
777
+
778
+ .story-scene-track { min-width: 0; }
779
+ .story-stick { position: sticky; top: var(--scene-top, calc(var(--header-height, 80px) + var(--subnav-h, 0px))); }
780
+ .story-ticker { display: none; }
781
+ @media (min-width: 960px) {
782
+ .feature-story .story-layout { align-items: stretch; }
783
+ .feature-story .story-scene { align-self: start; }
784
+ .feature-story .story-scene-track { grid-column: 2; grid-row: calc(var(--story-index) + 1); }
785
+ .feature-story .story-step .feature-copy { position: sticky; top: var(--copy-top, calc(var(--header-height, 80px) + var(--subnav-h, 0px) + 24px)); }
786
+ }
787
+ @media (max-width: 959.98px) {
788
+ .feature-story .story-layout { grid-template-columns: minmax(0, 1fr); gap: 30px; }
789
+ .feature-story .story-step { grid-column: 1; grid-row: calc(var(--story-index) * 2 + 1); padding-bottom: 0; }
790
+ .feature-story .story-scene { grid-column: 1; grid-row: calc(var(--story-index) * 2 + 2); }
791
+ .feature-story .story-scene-track { grid-column: 1; grid-row: calc(var(--story-index) * 2 + 2); }
792
+ .feature-story .story-step .story-scene-track { margin: 22px calc(50% - 50vw) 6px; }
793
+ .feature-story .story-stick > .story-scene { width: 100%; margin: 0 auto; border-inline: 0; border-radius: 0; box-shadow: none; padding-inline: 8px; }
794
+ .feature-story .story-stick > .story-scene > figcaption { display: none; }
795
+ .feature-story .story-step .art { width: min(100%, calc((100svh - 330px) * 540 / 520)); }
796
+ .story-ticker { display: grid; justify-items: center; gap: 10px; padding: 14px 20px 6px; text-align: center; }
797
+ .story-ticker p { display: grid; place-items: center; min-height: 3em; margin: 0; color: #277257; font-size: 16px; font-weight: 650; line-height: 1.45; letter-spacing: -.01em; }
798
+ .story-ticker span { display: flex; gap: 6px; }
799
+ .story-ticker i { width: 6px; height: 6px; border-radius: 50%; background: #23344733; transition: background .2s, width .2s; }
800
+ .story-ticker i.on { width: 18px; border-radius: 3px; background: #277257; }
801
+ .story-step .story-scene-track ~ .feature-benefits { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
802
+ }
803
+ .wf-edge { fill: none; stroke: var(--sk-ink); stroke-width: 1.6; stroke-linecap: round; opacity: .5; }
804
+ .wf-edge.wf-loop { stroke-dasharray: 5 6; opacity: .6; }
805
+ .wf-card { white-space: nowrap; }
806
+ .wf-label, .wf-round, .wf-verdict { position: absolute; left: calc(var(--x) * 100% / 540); top: calc(var(--y) * 100% / 520); translate: -50% -50%; z-index: 3; white-space: nowrap; }
807
+ .wf-label { color: #43617d; font: 600 .74em/1.3 var(--mono); }
808
+ .wf-round { padding: .15em .6em; border: 1.2px dashed #23344780; border-radius: 999px; background: #fffef7; color: var(--sk-ink); font: 600 .74em/1.4 var(--mono); }
809
+ .wf-edge.wf-loop, [data-pa="profile"] .pa-lines path { stroke-dasharray: 5 7; animation: dm-dash 1.1s linear infinite; }
810
+ @media (prefers-reduced-motion: reduce) { .wf-edge.wf-loop, [data-pa="profile"] .pa-lines path { animation: none; } }
811
+ .dm-matrix-card { padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
812
+ .dm-matrix-card h3, .dm-matrix-card > p { text-align: center; }
813
+ .dm-chip { padding: 0; border: 0; background: none; font: 600 14px/1.5 var(--font, Inter, system-ui, sans-serif); }
814
+ .dm-chip.dm-l, .dm-chip.dm-s, .dm-chip.dm-n { background: none; }
815
+ .dm-chip::before { width: 8px; height: 8px; border-radius: 50%; opacity: 1; }
816
+ .dm-chip.dm-l::before { background: #5b9bd8; }
817
+ .dm-chip.dm-s::before { background: #9a7fd1; }
818
+ .dm-chip.dm-n { color: #4d5f72; font-weight: 500; white-space: normal; }
819
+ @media (max-width: 959.98px) {
820
+ .dm-step .story-scene-track { margin: 22px calc(50% - 50vw) 6px; }
821
+ .dm-step .story-stick > .dm-scene { padding-inline: 10px; }
822
+ .dm-step .story-stick > .dm-scene > figcaption { display: none; }
823
+ .dm-step .story-scene-track ~ .feature-benefits { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
824
+ }
825
+ .dm-chip.dm-l::before, .dm-chip.dm-s::before { width: 16px; height: 16px; border-radius: 0; -webkit-mask: var(--chip-icon) center / contain no-repeat; mask: var(--chip-icon) center / contain no-repeat; }
826
+ .dm-chip.dm-l { --chip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='5' width='14' height='10' rx='1.5'/%3E%3Cpath d='M2.5 19h19'/%3E%3C/svg%3E"); color: #1d64a8; }
827
+ .dm-chip.dm-s { --chip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='7' rx='2'/%3E%3Crect x='4' y='14' width='16' height='7' rx='2'/%3E%3Cpath d='M8 6.5h.01M8 17.5h.01'/%3E%3C/svg%3E"); color: #b0521f; }
828
+ .dm-chip.dm-l::before { background: #1d64a8; }
829
+ .dm-chip.dm-s::before { background: #b0521f; }
830
+ .rm-term, .rm-agent, .rm-host { rotate: none; }
831
+ .shots { grid-template-columns: 1fr 1fr; align-items: start; }
832
+ .shot, .shot-web, .shot-code { rotate: none; margin-top: 0; }
833
+ .shot figcaption { rotate: -3deg; }