@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
@@ -1,31 +1,11 @@
1
- import { type AgentMessage, uuidv7 } from "@aicontainer/agent-core";
2
- import type { Message, TextContent, UserContent } from "@aicontainer/ai";
1
+ import { type AgentMessage, uuidv7 } from "../loop/index.ts";
2
+ import type { Message } from "@ragents/ai";
3
3
  import { randomUUID } from "crypto";
4
- import {
5
- appendFileSync,
6
- closeSync,
7
- createReadStream,
8
- existsSync,
9
- mkdirSync,
10
- openSync,
11
- readdirSync,
12
- readSync,
13
- statSync,
14
- writeFileSync,
15
- } from "fs";
16
- import { readdir, stat } from "fs/promises";
4
+ import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readSync, statSync, writeFileSync } from "fs";
17
5
  import { join, resolve } from "path";
18
- import { createInterface } from "readline";
19
6
  import { StringDecoder } from "string_decoder";
20
- import { getAgentDir as getDefaultAgentDir, getSessionsDir } from "../config.ts";
21
7
  import { normalizePath, resolvePath } from "../utils/paths.ts";
22
- import {
23
- type BashExecutionMessage,
24
- type CustomMessage,
25
- createBranchSummaryMessage,
26
- createCompactionSummaryMessage,
27
- createCustomMessage,
28
- } from "./messages.ts";
8
+ import { type CustomMessage, createCompactionSummaryMessage } from "./messages.ts";
29
9
 
30
10
  export const CURRENT_SESSION_VERSION = 3;
31
11
 
@@ -77,16 +57,6 @@ export interface CompactionEntry<T = unknown> extends SessionEntryBase {
77
57
  fromHook?: boolean;
78
58
  }
79
59
 
80
- export interface BranchSummaryEntry<T = unknown> extends SessionEntryBase {
81
- type: "branch_summary";
82
- fromId: string;
83
- summary: string;
84
- /** Extension-specific data (not sent to LLM) */
85
- details?: T;
86
- /** True if generated by an extension, false if agent-generated */
87
- fromHook?: boolean;
88
- }
89
-
90
60
  /**
91
61
  * Custom entry for extensions to store extension-specific data in the session.
92
62
  * Use customType to identify your extension's entries.
@@ -103,103 +73,24 @@ export interface CustomEntry<T = unknown> extends SessionEntryBase {
103
73
  data?: T;
104
74
  }
105
75
 
106
- /** Label entry for user-defined bookmarks/markers on entries. */
107
- export interface LabelEntry extends SessionEntryBase {
108
- type: "label";
109
- targetId: string;
110
- label: string | undefined;
111
- }
112
-
113
- /** Session metadata entry (e.g., user-defined display name). */
114
- export interface SessionInfoEntry extends SessionEntryBase {
115
- type: "session_info";
116
- name?: string;
117
- }
118
-
119
- /**
120
- * Custom message entry for extensions to inject messages into LLM context.
121
- * Use customType to identify your extension's entries.
122
- *
123
- * Unlike CustomEntry, this DOES participate in LLM context.
124
- * The content is converted to a user message in buildSessionContext().
125
- * Use details for extension-specific metadata (not sent to LLM).
126
- *
127
- * display controls TUI rendering:
128
- * - false: hidden entirely
129
- * - true: rendered with distinct styling (different from user messages)
130
- */
131
- export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
132
- type: "custom_message";
133
- customType: string;
134
- content: string | UserContent[];
135
- details?: T;
136
- display: boolean;
137
- }
138
-
139
76
  /** Session entry - has id/parentId for tree structure (returned by "read" methods in SessionManager) */
140
77
  export type SessionEntry =
141
78
  | SessionMessageEntry
142
79
  | ThinkingLevelChangeEntry
143
80
  | ModelChangeEntry
144
81
  | CompactionEntry
145
- | BranchSummaryEntry
146
- | CustomEntry
147
- | CustomMessageEntry
148
- | LabelEntry
149
- | SessionInfoEntry;
82
+ | CustomEntry;
150
83
 
151
84
  /** Raw file entry (includes header) */
152
85
  export type FileEntry = SessionHeader | SessionEntry;
153
86
 
154
- /** Tree node for getTree() - defensive copy of session structure */
155
- export interface SessionTreeNode {
156
- entry: SessionEntry;
157
- children: SessionTreeNode[];
158
- /** Resolved label for this entry, if any */
159
- label?: string;
160
- /** Timestamp of the latest label change for this entry, if any */
161
- labelTimestamp?: string;
162
- }
163
-
164
87
  export interface SessionContext {
165
88
  messages: AgentMessage[];
166
89
  thinkingLevel: string;
167
90
  model: { provider: string; modelId: string } | null;
168
91
  }
169
92
 
170
- export interface SessionInfo {
171
- path: string;
172
- id: string;
173
- /** Working directory where the session was started. Empty string for old sessions. */
174
- cwd: string;
175
- /** User-defined display name from session_info entries. */
176
- name?: string;
177
- /** Path to the parent session (if this session was forked). */
178
- parentSessionPath?: string;
179
- created: Date;
180
- modified: Date;
181
- messageCount: number;
182
- firstMessage: string;
183
- allMessagesText: string;
184
- }
185
-
186
- export type ReadonlySessionManager = Pick<
187
- SessionManager,
188
- | "getCwd"
189
- | "getSessionDir"
190
- | "getSessionId"
191
- | "getSessionFile"
192
- | "getLeafId"
193
- | "getLeafEntry"
194
- | "getEntry"
195
- | "getLabel"
196
- | "getBranch"
197
- | "buildContextEntries"
198
- | "getHeader"
199
- | "getEntries"
200
- | "getTree"
201
- | "getSessionName"
202
- >;
93
+ export type ReadonlySessionManager = Pick<SessionManager, "getBranch">;
203
94
 
204
95
  function createSessionId(): string {
205
96
  return uuidv7();
@@ -286,29 +177,6 @@ function migrateToCurrentVersion(entries: FileEntry[]): boolean {
286
177
  return true;
287
178
  }
288
179
 
289
- /** Exported for testing */
290
- export function migrateSessionEntries(entries: FileEntry[]): void {
291
- migrateToCurrentVersion(entries);
292
- }
293
-
294
- /** Exported for compaction.test.ts */
295
- export function parseSessionEntries(content: string): FileEntry[] {
296
- const entries: FileEntry[] = [];
297
- const lines = content.trim().split("\n");
298
-
299
- for (const line of lines) {
300
- if (!line.trim()) continue;
301
- try {
302
- const entry = JSON.parse(line) as FileEntry;
303
- entries.push(entry);
304
- } catch {
305
- // Skip malformed lines
306
- }
307
- }
308
-
309
- return entries;
310
- }
311
-
312
180
  export function getLatestCompactionEntry(entries: SessionEntry[]): CompactionEntry | null {
313
181
  for (let i = entries.length - 1; i >= 0; i--) {
314
182
  if (entries[i].type === "compaction") {
@@ -389,14 +257,6 @@ export function sessionEntryToContextMessages(entry: SessionEntry): AgentMessage
389
257
  }
390
258
  return [message];
391
259
  }
392
- if (entry.type === "custom_message") {
393
- return [
394
- createCustomMessage(entry.customType, entry.content ?? [], entry.display, entry.details, entry.timestamp),
395
- ];
396
- }
397
- if (entry.type === "branch_summary" && entry.summary) {
398
- return [createBranchSummaryMessage(entry.summary, entry.fromId, entry.timestamp)];
399
- }
400
260
  if (entry.type === "compaction") {
401
261
  return [createCompactionSummaryMessage(entry.summary, entry.tokensBefore, entry.timestamp)];
402
262
  }
@@ -465,25 +325,6 @@ export function buildSessionContext(
465
325
  return { messages, thinkingLevel, model };
466
326
  }
467
327
 
468
- /**
469
- * Compute the default session directory for a cwd.
470
- * Encodes cwd into a safe directory name under ~/.agent/sessions/.
471
- */
472
- function getDefaultSessionDirPath(cwd: string, agentDir: string = getDefaultAgentDir()): string {
473
- const resolvedCwd = resolvePath(cwd);
474
- const resolvedAgentDir = resolvePath(agentDir);
475
- const safePath = `--${resolvedCwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
476
- return join(resolvedAgentDir, "sessions", safePath);
477
- }
478
-
479
- export function getDefaultSessionDir(cwd: string, agentDir: string = getDefaultAgentDir()): string {
480
- const sessionDir = getDefaultSessionDirPath(cwd, agentDir);
481
- if (!existsSync(sessionDir)) {
482
- mkdirSync(sessionDir, { recursive: true });
483
- }
484
- return sessionDir;
485
- }
486
-
487
328
  const SESSION_READ_BUFFER_SIZE = 1024 * 1024;
488
329
 
489
330
  function parseSessionEntryLine(line: string): FileEntry | null {
@@ -541,242 +382,6 @@ export function loadEntriesFromFile(filePath: string): FileEntry[] {
541
382
  return entries;
542
383
  }
543
384
 
544
- function readSessionHeader(filePath: string): SessionHeader | null {
545
- try {
546
- const fd = openSync(filePath, "r");
547
- const buffer = Buffer.alloc(512);
548
- const bytesRead = readSync(fd, buffer, 0, 512, 0);
549
- closeSync(fd);
550
- const firstLine = buffer.toString("utf8", 0, bytesRead).split("\n")[0];
551
- if (!firstLine) return null;
552
- const header = JSON.parse(firstLine) as Record<string, unknown>;
553
- if (header.type !== "session" || typeof header.id !== "string") {
554
- return null;
555
- }
556
- return header as unknown as SessionHeader;
557
- } catch {
558
- return null;
559
- }
560
- }
561
-
562
- function getSessionHeaderCwd(header: SessionHeader): string | undefined {
563
- const cwd = (header as { cwd?: unknown }).cwd;
564
- return typeof cwd === "string" ? cwd : undefined;
565
- }
566
-
567
- function sessionCwdMatches(cwd: string | undefined, resolvedCwd: string): boolean {
568
- return cwd !== undefined && cwd !== "" && resolvePath(cwd) === resolvedCwd;
569
- }
570
-
571
- /** Exported for testing */
572
- export function findMostRecentSession(sessionDir: string, cwd?: string): string | null {
573
- const resolvedSessionDir = normalizePath(sessionDir);
574
- const resolvedCwd = cwd ? resolvePath(cwd) : undefined;
575
- try {
576
- const files = readdirSync(resolvedSessionDir)
577
- .filter((f) => f.endsWith(".jsonl"))
578
- .map((f) => join(resolvedSessionDir, f))
579
- .map((path) => ({ path, header: readSessionHeader(path) }))
580
- .filter(
581
- (file): file is { path: string; header: SessionHeader } =>
582
- file.header !== null &&
583
- (!resolvedCwd || sessionCwdMatches(getSessionHeaderCwd(file.header), resolvedCwd)),
584
- )
585
- .map(({ path }) => ({ path, mtime: statSync(path).mtime }))
586
- .sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
587
-
588
- return files[0]?.path || null;
589
- } catch {
590
- return null;
591
- }
592
- }
593
-
594
- function isMessageWithContent(message: AgentMessage): message is Message {
595
- return typeof (message as Message).role === "string" && "content" in message;
596
- }
597
-
598
- function extractTextContent(message: Message): string {
599
- const content = message.content;
600
- if (typeof content === "string") {
601
- return content;
602
- }
603
- return content
604
- .filter((block): block is TextContent => block.type === "text")
605
- .map((block) => block.text)
606
- .join(" ");
607
- }
608
-
609
- function getMessageActivityTime(entry: SessionMessageEntry): number | undefined {
610
- const message = entry.message;
611
- if (!isMessageWithContent(message)) return undefined;
612
- if (message.role !== "user" && message.role !== "assistant") return undefined;
613
-
614
- const msgTimestamp = (message as { timestamp?: number }).timestamp;
615
- if (typeof msgTimestamp === "number") {
616
- return msgTimestamp;
617
- }
618
-
619
- const t = new Date(entry.timestamp).getTime();
620
- return Number.isNaN(t) ? undefined : t;
621
- }
622
-
623
- async function buildSessionInfo(filePath: string): Promise<SessionInfo | null> {
624
- try {
625
- const stats = await stat(filePath);
626
- let header: SessionHeader | null = null;
627
- let messageCount = 0;
628
- let firstMessage = "";
629
- const allMessages: string[] = [];
630
- let name: string | undefined;
631
- let lastActivityTime: number | undefined;
632
-
633
- const rl = createInterface({
634
- input: createReadStream(filePath, { encoding: "utf8" }),
635
- crlfDelay: Infinity,
636
- });
637
-
638
- for await (const line of rl) {
639
- const entry = parseSessionEntryLine(line);
640
- if (!entry) continue;
641
-
642
- if (!header) {
643
- if (entry.type !== "session") return null;
644
- header = entry;
645
- continue;
646
- }
647
-
648
- // Extract session name (use latest, including explicit clears)
649
- if (entry.type === "session_info") {
650
- name = entry.name?.trim() || undefined;
651
- }
652
-
653
- if (entry.type !== "message") continue;
654
- messageCount++;
655
-
656
- const activityTime = getMessageActivityTime(entry);
657
- if (typeof activityTime === "number") {
658
- lastActivityTime = Math.max(lastActivityTime ?? 0, activityTime);
659
- }
660
-
661
- const message = entry.message;
662
- if (!isMessageWithContent(message)) continue;
663
- if (message.role !== "user" && message.role !== "assistant") continue;
664
-
665
- const textContent = extractTextContent(message);
666
- if (!textContent) continue;
667
-
668
- allMessages.push(textContent);
669
- if (!firstMessage && message.role === "user") {
670
- firstMessage = textContent;
671
- }
672
- }
673
-
674
- if (!header) return null;
675
-
676
- const cwd = typeof header.cwd === "string" ? header.cwd : "";
677
- const parentSessionPath = header.parentSession;
678
- const headerTime = typeof header.timestamp === "string" ? new Date(header.timestamp).getTime() : NaN;
679
- const modified =
680
- typeof lastActivityTime === "number" && lastActivityTime > 0
681
- ? new Date(lastActivityTime)
682
- : !Number.isNaN(headerTime)
683
- ? new Date(headerTime)
684
- : stats.mtime;
685
-
686
- return {
687
- path: filePath,
688
- id: header.id,
689
- cwd,
690
- name,
691
- parentSessionPath,
692
- created: new Date(header.timestamp),
693
- modified,
694
- messageCount,
695
- firstMessage: firstMessage || "(no messages)",
696
- allMessagesText: allMessages.join(" "),
697
- };
698
- } catch {
699
- return null;
700
- }
701
- }
702
-
703
- export type SessionListProgress = (loaded: number, total: number) => void;
704
-
705
- const MAX_CONCURRENT_SESSION_INFO_LOADS = 10;
706
-
707
- async function buildSessionInfosWithConcurrency(
708
- files: string[],
709
- onLoaded: () => void,
710
- ): Promise<(SessionInfo | null)[]> {
711
- const results: (SessionInfo | null)[] = new Array(files.length).fill(null);
712
- const inFlight = new Set<Promise<void>>();
713
- let nextIndex = 0;
714
-
715
- const startNext = (): void => {
716
- const index = nextIndex++;
717
- const file = files[index];
718
- if (!file) return;
719
-
720
- let task: Promise<void>;
721
- task = buildSessionInfo(file)
722
- .then((info) => {
723
- results[index] = info;
724
- })
725
- .catch(() => {
726
- results[index] = null;
727
- })
728
- .finally(() => {
729
- inFlight.delete(task);
730
- onLoaded();
731
- });
732
- inFlight.add(task);
733
- };
734
-
735
- while (nextIndex < files.length || inFlight.size > 0) {
736
- while (nextIndex < files.length && inFlight.size < MAX_CONCURRENT_SESSION_INFO_LOADS) {
737
- startNext();
738
- }
739
- if (inFlight.size > 0) {
740
- await Promise.race(inFlight);
741
- }
742
- }
743
-
744
- return results;
745
- }
746
-
747
- async function listSessionsFromDir(
748
- dir: string,
749
- onProgress?: SessionListProgress,
750
- progressOffset = 0,
751
- progressTotal?: number,
752
- ): Promise<SessionInfo[]> {
753
- const sessions: SessionInfo[] = [];
754
- if (!existsSync(dir)) {
755
- return sessions;
756
- }
757
-
758
- try {
759
- const dirEntries = await readdir(dir);
760
- const files = dirEntries.filter((f) => f.endsWith(".jsonl")).map((f) => join(dir, f));
761
- const total = progressTotal ?? files.length;
762
-
763
- let loaded = 0;
764
- const results = await buildSessionInfosWithConcurrency(files, () => {
765
- loaded++;
766
- onProgress?.(progressOffset + loaded, total);
767
- });
768
- for (const info of results) {
769
- if (info) {
770
- sessions.push(info);
771
- }
772
- }
773
- } catch {
774
- // Return empty list on error
775
- }
776
-
777
- return sessions;
778
- }
779
-
780
385
  /**
781
386
  * Manages conversation sessions as append-only trees stored in JSONL files.
782
387
  *
@@ -797,8 +402,6 @@ export class SessionManager {
797
402
  private flushed: boolean = false;
798
403
  private fileEntries: FileEntry[] = [];
799
404
  private byId: Map<string, SessionEntry> = new Map();
800
- private labelsById: Map<string, string> = new Map();
801
- private labelTimestampsById: Map<string, string> = new Map();
802
405
  private leafId: string | null = null;
803
406
 
804
407
  private constructor(
@@ -874,8 +477,6 @@ export class SessionManager {
874
477
  };
875
478
  this.fileEntries = [header];
876
479
  this.byId.clear();
877
- this.labelsById.clear();
878
- this.labelTimestampsById.clear();
879
480
  this.leafId = null;
880
481
  this.flushed = false;
881
482
 
@@ -888,22 +489,11 @@ export class SessionManager {
888
489
 
889
490
  private _buildIndex(): void {
890
491
  this.byId.clear();
891
- this.labelsById.clear();
892
- this.labelTimestampsById.clear();
893
492
  this.leafId = null;
894
493
  for (const entry of this.fileEntries) {
895
494
  if (entry.type === "session") continue;
896
495
  this.byId.set(entry.id, entry);
897
496
  this.leafId = entry.id;
898
- if (entry.type === "label") {
899
- if (entry.label) {
900
- this.labelsById.set(entry.targetId, entry.label);
901
- this.labelTimestampsById.set(entry.targetId, entry.timestamp);
902
- } else {
903
- this.labelsById.delete(entry.targetId);
904
- this.labelTimestampsById.delete(entry.targetId);
905
- }
906
- }
907
497
  }
908
498
  }
909
499
 
@@ -931,10 +521,6 @@ export class SessionManager {
931
521
  return this.sessionDir;
932
522
  }
933
523
 
934
- usesDefaultSessionDir(): boolean {
935
- return this.sessionDir === getDefaultSessionDirPath(this.cwd);
936
- }
937
-
938
524
  getSessionId(): string {
939
525
  return this.sessionId;
940
526
  }
@@ -980,12 +566,9 @@ export class SessionManager {
980
566
  }
981
567
 
982
568
  /** Append a message as child of current leaf, then advance leaf. Returns entry id.
983
- * Does not allow writing CompactionSummaryMessage and BranchSummaryMessage directly.
984
- * Reason: we want these to be top-level entries in the session, not message session entries,
985
- * so it is easier to find them.
986
- * These need to be appended via appendCompaction() and appendBranchSummary() methods.
569
+ * Compaction summaries are top-level entries appended via appendCompaction(), not message entries.
987
570
  */
988
- appendMessage(message: Message | CustomMessage | BashExecutionMessage): string {
571
+ appendMessage(message: Message | CustomMessage): string {
989
572
  const entry: SessionMessageEntry = {
990
573
  type: "message",
991
574
  id: generateId(this.byId),
@@ -1061,62 +644,6 @@ export class SessionManager {
1061
644
  return entry.id;
1062
645
  }
1063
646
 
1064
- /** Append a session info entry (e.g., display name). Returns entry id. */
1065
- appendSessionInfo(name: string): string {
1066
- const sanitizedName = name.replace(/[\r\n]+/g, " ").trim();
1067
- const entry: SessionInfoEntry = {
1068
- type: "session_info",
1069
- id: generateId(this.byId),
1070
- parentId: this.leafId,
1071
- timestamp: new Date().toISOString(),
1072
- name: sanitizedName,
1073
- };
1074
- this._appendEntry(entry);
1075
- return entry.id;
1076
- }
1077
-
1078
- /** Get the current session name from the latest session_info entry, if any. */
1079
- getSessionName(): string | undefined {
1080
- // Walk entries in reverse to find the latest session_info entry.
1081
- // Empty names explicitly clear the session title.
1082
- const entries = this.getEntries();
1083
- for (let i = entries.length - 1; i >= 0; i--) {
1084
- const entry = entries[i];
1085
- if (entry.type === "session_info") {
1086
- return entry.name?.trim() || undefined;
1087
- }
1088
- }
1089
- return undefined;
1090
- }
1091
-
1092
- /**
1093
- * Append a custom message entry (for extensions) that participates in LLM context.
1094
- * @param customType Extension identifier for filtering on reload
1095
- * @param content Message content (string or TextContent/ImageContent array)
1096
- * @param display Whether to show in TUI (true = styled display, false = hidden)
1097
- * @param details Optional extension-specific metadata (not sent to LLM)
1098
- * @returns Entry id
1099
- */
1100
- appendCustomMessageEntry<T = unknown>(
1101
- customType: string,
1102
- content: string | UserContent[],
1103
- display: boolean,
1104
- details?: T,
1105
- ): string {
1106
- const entry: CustomMessageEntry<T> = {
1107
- type: "custom_message",
1108
- customType,
1109
- content,
1110
- display,
1111
- details,
1112
- id: generateId(this.byId),
1113
- parentId: this.leafId,
1114
- timestamp: new Date().toISOString(),
1115
- };
1116
- this._appendEntry(entry);
1117
- return entry.id;
1118
- }
1119
-
1120
647
  // =========================================================================
1121
648
  // Tree Traversal
1122
649
  // =========================================================================
@@ -1133,54 +660,6 @@ export class SessionManager {
1133
660
  return this.byId.get(id);
1134
661
  }
1135
662
 
1136
- /**
1137
- * Get all direct children of an entry.
1138
- */
1139
- getChildren(parentId: string): SessionEntry[] {
1140
- const children: SessionEntry[] = [];
1141
- for (const entry of this.byId.values()) {
1142
- if (entry.parentId === parentId) {
1143
- children.push(entry);
1144
- }
1145
- }
1146
- return children;
1147
- }
1148
-
1149
- /**
1150
- * Get the label for an entry, if any.
1151
- */
1152
- getLabel(id: string): string | undefined {
1153
- return this.labelsById.get(id);
1154
- }
1155
-
1156
- /**
1157
- * Set or clear a label on an entry.
1158
- * Labels are user-defined markers for bookmarking/navigation.
1159
- * Pass undefined or empty string to clear the label.
1160
- */
1161
- appendLabelChange(targetId: string, label: string | undefined): string {
1162
- if (!this.byId.has(targetId)) {
1163
- throw new Error(`Entry ${targetId} not found`);
1164
- }
1165
- const entry: LabelEntry = {
1166
- type: "label",
1167
- id: generateId(this.byId),
1168
- parentId: this.leafId,
1169
- timestamp: new Date().toISOString(),
1170
- targetId,
1171
- label,
1172
- };
1173
- this._appendEntry(entry);
1174
- if (label) {
1175
- this.labelsById.set(targetId, label);
1176
- this.labelTimestampsById.set(targetId, entry.timestamp);
1177
- } else {
1178
- this.labelsById.delete(targetId);
1179
- this.labelTimestampsById.delete(targetId);
1180
- }
1181
- return entry.id;
1182
- }
1183
-
1184
663
  /**
1185
664
  * Walk from entry to root, returning all entries in path order.
1186
665
  * Includes all entry types (messages, compaction, model changes, etc.).
@@ -1231,216 +710,13 @@ export class SessionManager {
1231
710
  return this.fileEntries.filter((e): e is SessionEntry => e.type !== "session");
1232
711
  }
1233
712
 
1234
- /**
1235
- * Get the session as a tree structure. Returns a shallow defensive copy of all entries.
1236
- * A well-formed session has exactly one root (first entry with parentId === null).
1237
- * Orphaned entries (broken parent chain) are also returned as roots.
1238
- */
1239
- getTree(): SessionTreeNode[] {
1240
- const entries = this.getEntries();
1241
- const nodeMap = new Map<string, SessionTreeNode>();
1242
- const roots: SessionTreeNode[] = [];
1243
-
1244
- // Create nodes with resolved labels
1245
- for (const entry of entries) {
1246
- const label = this.labelsById.get(entry.id);
1247
- const labelTimestamp = this.labelTimestampsById.get(entry.id);
1248
- nodeMap.set(entry.id, { entry, children: [], label, labelTimestamp });
1249
- }
1250
-
1251
- // Build tree
1252
- for (const entry of entries) {
1253
- const node = nodeMap.get(entry.id)!;
1254
- if (entry.parentId === null || entry.parentId === entry.id) {
1255
- roots.push(node);
1256
- } else {
1257
- const parent = nodeMap.get(entry.parentId);
1258
- if (parent) {
1259
- parent.children.push(node);
1260
- } else {
1261
- // Orphan - treat as root
1262
- roots.push(node);
1263
- }
1264
- }
1265
- }
1266
-
1267
- // Sort children by timestamp (oldest first, newest at bottom)
1268
- // Use iterative approach to avoid stack overflow on deep trees
1269
- const stack: SessionTreeNode[] = [...roots];
1270
- while (stack.length > 0) {
1271
- const node = stack.pop()!;
1272
- node.children.sort((a, b) => new Date(a.entry.timestamp).getTime() - new Date(b.entry.timestamp).getTime());
1273
- stack.push(...node.children);
1274
- }
1275
-
1276
- return roots;
1277
- }
1278
-
1279
- // =========================================================================
1280
- // Branching
1281
- // =========================================================================
1282
-
1283
- /**
1284
- * Start a new branch from an earlier entry.
1285
- * Moves the leaf pointer to the specified entry. The next appendXXX() call
1286
- * will create a child of that entry, forming a new branch. Existing entries
1287
- * are not modified or deleted.
1288
- */
1289
- branch(branchFromId: string): void {
1290
- if (!this.byId.has(branchFromId)) {
1291
- throw new Error(`Entry ${branchFromId} not found`);
1292
- }
1293
- this.leafId = branchFromId;
1294
- }
1295
-
1296
- /**
1297
- * Reset the leaf pointer to null (before any entries).
1298
- * The next appendXXX() call will create a new root entry (parentId = null).
1299
- * Use this when navigating to re-edit the first user message.
1300
- */
1301
- resetLeaf(): void {
1302
- this.leafId = null;
1303
- }
1304
-
1305
- /**
1306
- * Start a new branch with a summary of the abandoned path.
1307
- * Same as branch(), but also appends a branch_summary entry that captures
1308
- * context from the abandoned conversation path.
1309
- */
1310
- branchWithSummary(branchFromId: string | null, summary: string, details?: unknown, fromHook?: boolean): string {
1311
- if (branchFromId !== null && !this.byId.has(branchFromId)) {
1312
- throw new Error(`Entry ${branchFromId} not found`);
1313
- }
1314
- this.leafId = branchFromId;
1315
- const entry: BranchSummaryEntry = {
1316
- type: "branch_summary",
1317
- id: generateId(this.byId),
1318
- parentId: branchFromId,
1319
- timestamp: new Date().toISOString(),
1320
- fromId: branchFromId ?? "root",
1321
- summary,
1322
- details,
1323
- fromHook,
1324
- };
1325
- this._appendEntry(entry);
1326
- return entry.id;
1327
- }
1328
-
1329
- /**
1330
- * Create a new session file containing only the path from root to the specified leaf.
1331
- * Useful for extracting a single conversation path from a branched session.
1332
- * Returns the new session file path, or undefined if not persisting.
1333
- */
1334
- createBranchedSession(leafId: string): string | undefined {
1335
- const previousSessionFile = this.sessionFile;
1336
- const path = this.getBranch(leafId);
1337
- if (path.length === 0) {
1338
- throw new Error(`Entry ${leafId} not found`);
1339
- }
1340
-
1341
- // Filter out LabelEntry from path - we'll recreate them from the resolved map.
1342
- // Because labels are real tree entries, later entries can be children of labels;
1343
- // removing labels requires re-chaining the retained path to avoid orphaned subtrees.
1344
- const pathWithoutLabels: SessionEntry[] = [];
1345
- let pathParentId: string | null = null;
1346
- for (const entry of path) {
1347
- if (entry.type === "label") continue;
1348
- pathWithoutLabels.push({ ...entry, parentId: pathParentId });
1349
- pathParentId = entry.id;
1350
- }
1351
-
1352
- const newSessionId = createSessionId();
1353
- const timestamp = new Date().toISOString();
1354
- const fileTimestamp = timestamp.replace(/[:.]/g, "-");
1355
- const newSessionFile = join(this.getSessionDir(), `${fileTimestamp}_${newSessionId}.jsonl`);
1356
-
1357
- const header: SessionHeader = {
1358
- type: "session",
1359
- version: CURRENT_SESSION_VERSION,
1360
- id: newSessionId,
1361
- timestamp,
1362
- cwd: this.cwd,
1363
- parentSession: this.persist ? previousSessionFile : undefined,
1364
- };
1365
-
1366
- // Collect labels for entries in the path
1367
- const pathEntryIds = new Set(pathWithoutLabels.map((e) => e.id));
1368
- const labelsToWrite: Array<{ targetId: string; label: string; timestamp: string }> = [];
1369
- for (const [targetId, label] of this.labelsById) {
1370
- if (pathEntryIds.has(targetId)) {
1371
- labelsToWrite.push({ targetId, label, timestamp: this.labelTimestampsById.get(targetId)! });
1372
- }
1373
- }
1374
-
1375
- if (this.persist) {
1376
- // Build label entries
1377
- const lastEntryId = pathWithoutLabels[pathWithoutLabels.length - 1]?.id || null;
1378
- let parentId = lastEntryId;
1379
- const labelEntries: LabelEntry[] = [];
1380
- for (const { targetId, label, timestamp: labelTimestamp } of labelsToWrite) {
1381
- const labelEntry: LabelEntry = {
1382
- type: "label",
1383
- id: generateId(new Set(pathEntryIds)),
1384
- parentId,
1385
- timestamp: labelTimestamp,
1386
- targetId,
1387
- label,
1388
- };
1389
- pathEntryIds.add(labelEntry.id);
1390
- labelEntries.push(labelEntry);
1391
- parentId = labelEntry.id;
1392
- }
1393
-
1394
- this.fileEntries = [header, ...pathWithoutLabels, ...labelEntries];
1395
- this.sessionId = newSessionId;
1396
- this.sessionFile = newSessionFile;
1397
- this._buildIndex();
1398
-
1399
- // Only write the file now if it contains an assistant message.
1400
- // Otherwise defer to _persist(), which creates the file on the
1401
- // first assistant response, matching the newSession() contract
1402
- // and avoiding the duplicate-header bug when _persist()'s
1403
- // no-assistant guard later resets flushed to false.
1404
- const hasAssistant = this.fileEntries.some((e) => e.type === "message" && e.message.role === "assistant");
1405
- if (hasAssistant) {
1406
- this._rewriteFile();
1407
- this.flushed = true;
1408
- } else {
1409
- this.flushed = false;
1410
- }
1411
-
1412
- return newSessionFile;
1413
- }
1414
-
1415
- // In-memory mode: replace current session with the path + labels
1416
- const labelEntries: LabelEntry[] = [];
1417
- let parentId = pathWithoutLabels[pathWithoutLabels.length - 1]?.id || null;
1418
- for (const { targetId, label, timestamp: labelTimestamp } of labelsToWrite) {
1419
- const labelEntry: LabelEntry = {
1420
- type: "label",
1421
- id: generateId(new Set([...pathEntryIds, ...labelEntries.map((e) => e.id)])),
1422
- parentId,
1423
- timestamp: labelTimestamp,
1424
- targetId,
1425
- label,
1426
- };
1427
- labelEntries.push(labelEntry);
1428
- parentId = labelEntry.id;
1429
- }
1430
- this.fileEntries = [header, ...pathWithoutLabels, ...labelEntries];
1431
- this.sessionId = newSessionId;
1432
- this._buildIndex();
1433
- return undefined;
1434
- }
1435
-
1436
713
  /**
1437
714
  * Create a new session.
1438
715
  * @param cwd Working directory (stored in session header)
1439
- * @param sessionDir Optional session directory. If omitted, uses default (~/.agent/sessions/<encoded-cwd>/).
716
+ * @param sessionDir Session directory
1440
717
  */
1441
- static create(cwd: string, sessionDir?: string, options?: NewSessionOptions): SessionManager {
1442
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);
1443
- return new SessionManager(cwd, dir, undefined, true, options);
718
+ static create(cwd: string, sessionDir: string, options?: NewSessionOptions): SessionManager {
719
+ return new SessionManager(cwd, normalizePath(sessionDir), undefined, true, options);
1444
720
  }
1445
721
 
1446
722
  /**
@@ -1460,164 +736,8 @@ export class SessionManager {
1460
736
  return new SessionManager(cwd, dir, resolvedPath, true);
1461
737
  }
1462
738
 
1463
- /**
1464
- * Continue the most recent session, or create new if none.
1465
- * @param cwd Working directory
1466
- * @param sessionDir Optional session directory. If omitted, uses default (~/.agent/sessions/<encoded-cwd>/).
1467
- */
1468
- static continueRecent(cwd: string, sessionDir?: string): SessionManager {
1469
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);
1470
- const filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);
1471
- const mostRecent = findMostRecentSession(dir, filterCwd ? cwd : undefined);
1472
- if (mostRecent) {
1473
- return new SessionManager(cwd, dir, mostRecent, true);
1474
- }
1475
- return new SessionManager(cwd, dir, undefined, true);
1476
- }
1477
-
1478
739
  /** Create an in-memory session (no file persistence) */
1479
740
  static inMemory(cwd: string = process.cwd(), options?: NewSessionOptions): SessionManager {
1480
741
  return new SessionManager(cwd, "", undefined, false, options);
1481
742
  }
1482
-
1483
- /**
1484
- * Fork a session from another project directory into the current project.
1485
- * Creates a new session in the target cwd with the full history from the source session.
1486
- * @param sourcePath Path to the source session file
1487
- * @param targetCwd Target working directory (where the new session will be stored)
1488
- * @param sessionDir Optional session directory. If omitted, uses default for targetCwd.
1489
- */
1490
- static forkFrom(
1491
- sourcePath: string,
1492
- targetCwd: string,
1493
- sessionDir?: string,
1494
- options?: NewSessionOptions,
1495
- ): SessionManager {
1496
- const resolvedSourcePath = resolvePath(sourcePath);
1497
- const resolvedTargetCwd = resolvePath(targetCwd);
1498
- const sourceEntries = loadEntriesFromFile(resolvedSourcePath);
1499
- if (sourceEntries.length === 0) {
1500
- throw new Error(`Cannot fork: source session file is empty or invalid: ${resolvedSourcePath}`);
1501
- }
1502
-
1503
- const sourceHeader = sourceEntries.find((e) => e.type === "session") as SessionHeader | undefined;
1504
- if (!sourceHeader) {
1505
- throw new Error(`Cannot fork: source session has no header: ${resolvedSourcePath}`);
1506
- }
1507
-
1508
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(resolvedTargetCwd);
1509
- if (!existsSync(dir)) {
1510
- mkdirSync(dir, { recursive: true });
1511
- }
1512
-
1513
- // Create new session file with new ID but forked content
1514
- if (options?.id !== undefined) {
1515
- assertValidSessionId(options.id);
1516
- }
1517
- const newSessionId = options?.id ?? createSessionId();
1518
- const timestamp = new Date().toISOString();
1519
- const fileTimestamp = timestamp.replace(/[:.]/g, "-");
1520
- const newSessionFile = join(dir, `${fileTimestamp}_${newSessionId}.jsonl`);
1521
-
1522
- // Write new header pointing to source as parent, with updated cwd
1523
- const newHeader: SessionHeader = {
1524
- type: "session",
1525
- version: CURRENT_SESSION_VERSION,
1526
- id: newSessionId,
1527
- timestamp,
1528
- cwd: resolvedTargetCwd,
1529
- parentSession: resolvedSourcePath,
1530
- };
1531
- writeFileSync(newSessionFile, `${JSON.stringify(newHeader)}\n`, { flag: "wx" });
1532
-
1533
- // Copy all non-header entries from source
1534
- for (const entry of sourceEntries) {
1535
- if (entry.type !== "session") {
1536
- appendFileSync(newSessionFile, `${JSON.stringify(entry)}\n`);
1537
- }
1538
- }
1539
-
1540
- return new SessionManager(resolvedTargetCwd, dir, newSessionFile, true);
1541
- }
1542
-
1543
- /**
1544
- * List all sessions for a directory.
1545
- * @param cwd Working directory (used to compute default session directory)
1546
- * @param sessionDir Optional session directory. If omitted, uses default (~/.agent/sessions/<encoded-cwd>/).
1547
- * @param onProgress Optional callback for progress updates (loaded, total)
1548
- */
1549
- static async list(cwd: string, sessionDir?: string, onProgress?: SessionListProgress): Promise<SessionInfo[]> {
1550
- const dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);
1551
- const filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);
1552
- const resolvedCwd = resolvePath(cwd);
1553
- const sessions = (await listSessionsFromDir(dir, onProgress)).filter(
1554
- (session) => !filterCwd || sessionCwdMatches(session.cwd, resolvedCwd),
1555
- );
1556
- sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
1557
- return sessions;
1558
- }
1559
-
1560
- /**
1561
- * List all sessions across all project directories.
1562
- * @param onProgress Optional callback for progress updates (loaded, total)
1563
- */
1564
- static async listAll(onProgress?: SessionListProgress): Promise<SessionInfo[]>;
1565
- static async listAll(sessionDir?: string, onProgress?: SessionListProgress): Promise<SessionInfo[]>;
1566
- static async listAll(
1567
- sessionDirOrOnProgress?: string | SessionListProgress,
1568
- onProgress?: SessionListProgress,
1569
- ): Promise<SessionInfo[]> {
1570
- const customSessionDir =
1571
- typeof sessionDirOrOnProgress === "string" ? normalizePath(sessionDirOrOnProgress) : undefined;
1572
- const progress = typeof sessionDirOrOnProgress === "function" ? sessionDirOrOnProgress : onProgress;
1573
- if (customSessionDir) {
1574
- const sessions = await listSessionsFromDir(customSessionDir, progress);
1575
- sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
1576
- return sessions;
1577
- }
1578
-
1579
- const sessionsDir = getSessionsDir();
1580
-
1581
- try {
1582
- if (!existsSync(sessionsDir)) {
1583
- return [];
1584
- }
1585
- const entries = await readdir(sessionsDir, { withFileTypes: true });
1586
- const dirs = entries.filter((e) => e.isDirectory()).map((e) => join(sessionsDir, e.name));
1587
-
1588
- // Count total files first for accurate progress
1589
- let totalFiles = 0;
1590
- const dirFiles: string[][] = [];
1591
- for (const dir of dirs) {
1592
- try {
1593
- const files = (await readdir(dir)).filter((f) => f.endsWith(".jsonl"));
1594
- dirFiles.push(files.map((f) => join(dir, f)));
1595
- totalFiles += files.length;
1596
- } catch {
1597
- dirFiles.push([]);
1598
- }
1599
- }
1600
-
1601
- // Process all files with progress tracking
1602
- let loaded = 0;
1603
- const sessions: SessionInfo[] = [];
1604
- const allFiles = dirFiles.flat();
1605
-
1606
- const results = await buildSessionInfosWithConcurrency(allFiles, () => {
1607
- loaded++;
1608
- progress?.(loaded, totalFiles);
1609
- });
1610
-
1611
- for (const info of results) {
1612
- if (info) {
1613
- sessions.push(info);
1614
- }
1615
- }
1616
-
1617
- sessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());
1618
- return sessions;
1619
- } catch {
1620
- return [];
1621
- }
1622
- }
1623
743
  }