@clinebot/core 0.0.34 → 0.0.36

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 (546) hide show
  1. package/README.md +13 -10
  2. package/dist/ClineCore.d.ts +96 -63
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/account/index.d.ts +1 -1
  5. package/dist/account/index.d.ts.map +1 -1
  6. package/dist/account/rpc.d.ts +6 -6
  7. package/dist/account/rpc.d.ts.map +1 -1
  8. package/dist/cron/index.d.ts +6 -0
  9. package/dist/cron/index.d.ts.map +1 -0
  10. package/dist/cron/resource-limiter.d.ts +9 -0
  11. package/dist/cron/resource-limiter.d.ts.map +1 -0
  12. package/dist/cron/schedule-command-service.d.ts +10 -0
  13. package/dist/cron/schedule-command-service.d.ts.map +1 -0
  14. package/dist/cron/schedule-service.d.ts +100 -0
  15. package/dist/cron/schedule-service.d.ts.map +1 -0
  16. package/dist/cron/scheduler.d.ts +66 -0
  17. package/dist/cron/scheduler.d.ts.map +1 -0
  18. package/dist/cron/sqlite-schedule-store.d.ts +52 -0
  19. package/dist/cron/sqlite-schedule-store.d.ts.map +1 -0
  20. package/dist/extensions/config/agent-config-loader.d.ts +6 -5
  21. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  22. package/dist/extensions/config/agent-config-parser.d.ts +1 -1
  23. package/dist/extensions/config/agent-config-parser.d.ts.map +1 -1
  24. package/dist/extensions/config/hooks-config-loader.d.ts +2 -2
  25. package/dist/extensions/config/hooks-config-loader.d.ts.map +1 -1
  26. package/dist/extensions/config/index.d.ts +3 -3
  27. package/dist/extensions/config/index.d.ts.map +1 -1
  28. package/dist/extensions/config/runtime-commands.d.ts +1 -0
  29. package/dist/extensions/config/runtime-commands.d.ts.map +1 -1
  30. package/dist/extensions/config/user-instruction-config-loader.d.ts +3 -2
  31. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  32. package/dist/extensions/context/agentic-compaction.d.ts +2 -2
  33. package/dist/extensions/context/agentic-compaction.d.ts.map +1 -1
  34. package/dist/extensions/context/compaction-shared.d.ts +5 -4
  35. package/dist/extensions/context/compaction-shared.d.ts.map +1 -1
  36. package/dist/extensions/context/compaction.d.ts.map +1 -1
  37. package/dist/extensions/plugin/plugin-config-loader.d.ts +9 -2
  38. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  39. package/dist/extensions/plugin/plugin-loader.d.ts +5 -3
  40. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  41. package/dist/extensions/plugin/plugin-module-import.d.ts.map +1 -1
  42. package/dist/extensions/plugin/plugin-sandbox.d.ts +15 -2
  43. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  44. package/dist/extensions/plugin/plugin-targeting.d.ts +7 -0
  45. package/dist/extensions/plugin/plugin-targeting.d.ts.map +1 -0
  46. package/dist/extensions/plugin-sandbox-bootstrap.js +253 -253
  47. package/dist/extensions/tools/constants.d.ts.map +1 -0
  48. package/dist/{tools → extensions/tools}/definitions.d.ts +1 -1
  49. package/dist/extensions/tools/definitions.d.ts.map +1 -0
  50. package/dist/extensions/tools/executors/apply-patch-parser.d.ts.map +1 -0
  51. package/dist/{tools → extensions/tools}/executors/apply-patch.d.ts +3 -1
  52. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -0
  53. package/dist/extensions/tools/executors/bash.d.ts.map +1 -0
  54. package/dist/extensions/tools/executors/editor.d.ts.map +1 -0
  55. package/dist/extensions/tools/executors/file-read.d.ts.map +1 -0
  56. package/dist/extensions/tools/executors/index.d.ts.map +1 -0
  57. package/dist/{tools → extensions/tools}/executors/search.d.ts +1 -1
  58. package/dist/extensions/tools/executors/search.d.ts.map +1 -0
  59. package/dist/extensions/tools/executors/web-fetch.d.ts.map +1 -0
  60. package/dist/extensions/tools/helpers.d.ts.map +1 -0
  61. package/dist/{tools → extensions/tools}/index.d.ts +2 -0
  62. package/dist/extensions/tools/index.d.ts.map +1 -0
  63. package/dist/{tools → extensions/tools}/model-tool-routing.d.ts +1 -1
  64. package/dist/extensions/tools/model-tool-routing.d.ts.map +1 -0
  65. package/dist/{tools → extensions/tools}/presets.d.ts +26 -44
  66. package/dist/extensions/tools/presets.d.ts.map +1 -0
  67. package/dist/extensions/tools/runtime.d.ts +25 -0
  68. package/dist/extensions/tools/runtime.d.ts.map +1 -0
  69. package/dist/extensions/tools/schemas.d.ts.map +1 -0
  70. package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -0
  71. package/dist/extensions/tools/team/index.d.ts.map +1 -0
  72. package/dist/{team → extensions/tools/team}/multi-agent.d.ts +1 -3
  73. package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -0
  74. package/dist/extensions/tools/team/projections.d.ts.map +1 -0
  75. package/dist/extensions/tools/team/runtime.d.ts.map +1 -0
  76. package/dist/{team → extensions/tools/team}/spawn-agent-tool.d.ts +0 -1
  77. package/dist/extensions/tools/team/spawn-agent-tool.d.ts.map +1 -0
  78. package/dist/extensions/tools/team/subagent-prompts.d.ts.map +1 -0
  79. package/dist/{team → extensions/tools/team}/team-tools.d.ts +1 -0
  80. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -0
  81. package/dist/{tools → extensions/tools}/types.d.ts +4 -3
  82. package/dist/extensions/tools/types.d.ts.map +1 -0
  83. package/dist/{runtime → hooks}/checkpoint-hooks.d.ts +7 -0
  84. package/dist/hooks/checkpoint-hooks.d.ts.map +1 -0
  85. package/dist/{runtime → hooks}/hook-file-hooks.d.ts +4 -3
  86. package/dist/hooks/hook-file-hooks.d.ts.map +1 -0
  87. package/dist/hooks/index.d.ts +0 -1
  88. package/dist/hooks/index.d.ts.map +1 -1
  89. package/dist/hooks/subprocess.d.ts +10 -130
  90. package/dist/hooks/subprocess.d.ts.map +1 -1
  91. package/dist/hub/browser-websocket.d.ts +18 -0
  92. package/dist/hub/browser-websocket.d.ts.map +1 -0
  93. package/dist/hub/client.d.ts +45 -0
  94. package/dist/hub/client.d.ts.map +1 -0
  95. package/dist/hub/connect.d.ts +15 -0
  96. package/dist/hub/connect.d.ts.map +1 -0
  97. package/dist/hub/daemon-entry.d.ts +2 -0
  98. package/dist/hub/daemon-entry.d.ts.map +1 -0
  99. package/dist/hub/daemon-entry.js +1045 -0
  100. package/dist/hub/daemon.d.ts +5 -0
  101. package/dist/hub/daemon.d.ts.map +1 -0
  102. package/dist/hub/defaults.d.ts +13 -0
  103. package/dist/hub/defaults.d.ts.map +1 -0
  104. package/dist/hub/discovery.d.ts +29 -0
  105. package/dist/hub/discovery.d.ts.map +1 -0
  106. package/dist/hub/index.d.ts +15 -0
  107. package/dist/hub/index.d.ts.map +1 -0
  108. package/dist/hub/index.js +1044 -0
  109. package/dist/hub/native-transport.d.ts +17 -0
  110. package/dist/hub/native-transport.d.ts.map +1 -0
  111. package/dist/hub/runtime-handlers.d.ts +11 -0
  112. package/dist/hub/runtime-handlers.d.ts.map +1 -0
  113. package/dist/hub/server.d.ts +86 -0
  114. package/dist/hub/server.d.ts.map +1 -0
  115. package/dist/hub/session-client.d.ts +87 -0
  116. package/dist/hub/session-client.d.ts.map +1 -0
  117. package/dist/hub/start-shared-server.d.ts +19 -0
  118. package/dist/hub/start-shared-server.d.ts.map +1 -0
  119. package/dist/hub/transport.d.ts +8 -0
  120. package/dist/hub/transport.d.ts.map +1 -0
  121. package/dist/hub/ui-client.d.ts +44 -0
  122. package/dist/hub/ui-client.d.ts.map +1 -0
  123. package/dist/hub/workspace.d.ts +4 -0
  124. package/dist/hub/workspace.d.ts.map +1 -0
  125. package/dist/index.d.ts +52 -39
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +557 -533
  128. package/dist/llms/configured-provider-registry.d.ts +28 -0
  129. package/dist/llms/configured-provider-registry.d.ts.map +1 -0
  130. package/dist/llms/provider-defaults.d.ts +27 -0
  131. package/dist/llms/provider-defaults.d.ts.map +1 -0
  132. package/dist/llms/provider-settings.d.ts +202 -0
  133. package/dist/llms/provider-settings.d.ts.map +1 -0
  134. package/dist/llms/runtime-config.d.ts +4 -0
  135. package/dist/llms/runtime-config.d.ts.map +1 -0
  136. package/dist/llms/runtime-registry.d.ts +20 -0
  137. package/dist/llms/runtime-registry.d.ts.map +1 -0
  138. package/dist/llms/runtime-types.d.ts +85 -0
  139. package/dist/llms/runtime-types.d.ts.map +1 -0
  140. package/dist/runtime/history.d.ts +4 -0
  141. package/dist/runtime/history.d.ts.map +1 -0
  142. package/dist/runtime/host.d.ts +8 -0
  143. package/dist/runtime/host.d.ts.map +1 -0
  144. package/dist/runtime/rules.d.ts +1 -0
  145. package/dist/runtime/rules.d.ts.map +1 -1
  146. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  147. package/dist/runtime/runtime-host.d.ts +103 -0
  148. package/dist/runtime/runtime-host.d.ts.map +1 -0
  149. package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts +1 -1
  150. package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts.map +1 -1
  151. package/dist/runtime/session-runtime.d.ts +3 -21
  152. package/dist/runtime/session-runtime.d.ts.map +1 -1
  153. package/dist/{session/session-agent-events.d.ts → services/agent-events.d.ts} +4 -4
  154. package/dist/services/agent-events.d.ts.map +1 -0
  155. package/dist/services/config.d.ts +3 -0
  156. package/dist/services/config.d.ts.map +1 -0
  157. package/dist/services/global-settings.d.ts +12 -0
  158. package/dist/services/global-settings.d.ts.map +1 -0
  159. package/dist/services/local-runtime-bootstrap.d.ts +47 -0
  160. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -0
  161. package/dist/services/plugin-tools.d.ts +16 -0
  162. package/dist/services/plugin-tools.d.ts.map +1 -0
  163. package/dist/{providers → services/providers}/local-provider-registry.d.ts +4 -4
  164. package/dist/services/providers/local-provider-registry.d.ts.map +1 -0
  165. package/dist/{providers → services/providers}/local-provider-service.d.ts +13 -13
  166. package/dist/services/providers/local-provider-service.d.ts.map +1 -0
  167. package/dist/{session → services}/session-artifacts.d.ts +0 -4
  168. package/dist/services/session-artifacts.d.ts.map +1 -0
  169. package/dist/{session/utils/helpers.d.ts → services/session-data.d.ts} +19 -27
  170. package/dist/services/session-data.d.ts.map +1 -0
  171. package/dist/{session → services}/session-telemetry.d.ts +2 -2
  172. package/dist/services/session-telemetry.d.ts.map +1 -0
  173. package/dist/{storage → services/storage}/file-team-store.d.ts +2 -2
  174. package/dist/services/storage/file-team-store.d.ts.map +1 -0
  175. package/dist/{storage → services/storage}/provider-settings-legacy-migration.d.ts +1 -1
  176. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -0
  177. package/dist/{storage → services/storage}/provider-settings-manager.d.ts +1 -1
  178. package/dist/services/storage/provider-settings-manager.d.ts.map +1 -0
  179. package/dist/{storage → services/storage}/sqlite-session-store.d.ts +3 -3
  180. package/dist/services/storage/sqlite-session-store.d.ts.map +1 -0
  181. package/dist/{storage → services/storage}/sqlite-team-store.d.ts +2 -2
  182. package/dist/services/storage/sqlite-team-store.d.ts.map +1 -0
  183. package/dist/{storage → services/storage}/team-store.d.ts +1 -1
  184. package/dist/services/storage/team-store.d.ts.map +1 -0
  185. package/dist/services/telemetry/ITelemetryAdapter.d.ts.map +1 -0
  186. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts.map +1 -0
  187. package/dist/services/telemetry/OpenTelemetryProvider.d.ts.map +1 -0
  188. package/dist/services/telemetry/TelemetryLoggerSink.d.ts.map +1 -0
  189. package/dist/services/telemetry/TelemetryService.d.ts.map +1 -0
  190. package/dist/services/telemetry/core-events.d.ts.map +1 -0
  191. package/dist/services/telemetry/distinct-id.d.ts.map +1 -0
  192. package/dist/services/telemetry/index.d.ts.map +1 -0
  193. package/dist/services/telemetry/index.js +28 -0
  194. package/dist/{session/utils → services}/usage.d.ts +1 -1
  195. package/dist/services/usage.d.ts.map +1 -0
  196. package/dist/services/workspace/file-indexer.d.ts.map +1 -0
  197. package/dist/services/workspace/index.d.ts.map +1 -0
  198. package/dist/services/workspace/mention-enricher.d.ts.map +1 -0
  199. package/dist/services/workspace-manifest.d.ts +16 -0
  200. package/dist/services/workspace-manifest.d.ts.map +1 -0
  201. package/dist/session/file-session-service.d.ts +4 -1
  202. package/dist/session/file-session-service.d.ts.map +1 -1
  203. package/dist/session/persistence-service.d.ts +15 -25
  204. package/dist/session/persistence-service.d.ts.map +1 -1
  205. package/dist/session/session-manifest-store.d.ts +22 -0
  206. package/dist/session/session-manifest-store.d.ts.map +1 -0
  207. package/dist/session/session-row.d.ts +93 -0
  208. package/dist/session/session-row.d.ts.map +1 -0
  209. package/dist/session/session-service.d.ts +8 -109
  210. package/dist/session/session-service.d.ts.map +1 -1
  211. package/dist/session/session-team-coordination.d.ts +4 -4
  212. package/dist/session/session-team-coordination.d.ts.map +1 -1
  213. package/dist/session/subagent-session-manager.d.ts +36 -0
  214. package/dist/session/subagent-session-manager.d.ts.map +1 -0
  215. package/dist/session/team-persistence-store.d.ts +24 -0
  216. package/dist/session/team-persistence-store.d.ts.map +1 -0
  217. package/dist/transports/hub.d.ts +47 -0
  218. package/dist/transports/hub.d.ts.map +1 -0
  219. package/dist/{session/default-session-manager.d.ts → transports/local.d.ts} +30 -16
  220. package/dist/transports/local.d.ts.map +1 -0
  221. package/dist/transports/remote.d.ts +10 -0
  222. package/dist/transports/remote.d.ts.map +1 -0
  223. package/dist/transports/runtime-host-support.d.ts +22 -0
  224. package/dist/transports/runtime-host-support.d.ts.map +1 -0
  225. package/dist/{chat → types}/chat-schema.d.ts +10 -12
  226. package/dist/types/chat-schema.d.ts.map +1 -0
  227. package/dist/types/config.d.ts +10 -9
  228. package/dist/types/config.d.ts.map +1 -1
  229. package/dist/types/provider-settings.d.ts +4 -5
  230. package/dist/types/provider-settings.d.ts.map +1 -1
  231. package/dist/{session/utils/types.d.ts → types/session.d.ts} +16 -6
  232. package/dist/types/session.d.ts.map +1 -0
  233. package/dist/types/sessions.d.ts +19 -0
  234. package/dist/types/sessions.d.ts.map +1 -1
  235. package/dist/types/storage.d.ts +1 -3
  236. package/dist/types/storage.d.ts.map +1 -1
  237. package/dist/types.d.ts +14 -6
  238. package/dist/types.d.ts.map +1 -1
  239. package/package.json +22 -13
  240. package/src/ClineCore.ts +183 -85
  241. package/src/account/index.ts +3 -3
  242. package/src/account/rpc.ts +12 -12
  243. package/src/auth/cline.ts +1 -1
  244. package/src/auth/codex.ts +1 -1
  245. package/src/auth/oca.ts +1 -1
  246. package/src/cron/index.ts +5 -0
  247. package/src/cron/resource-limiter.ts +46 -0
  248. package/src/cron/schedule-command-service.ts +193 -0
  249. package/src/cron/schedule-service.ts +703 -0
  250. package/src/cron/scheduler.ts +637 -0
  251. package/src/cron/sqlite-schedule-store.ts +708 -0
  252. package/src/extensions/config/agent-config-loader.ts +18 -12
  253. package/src/extensions/config/agent-config-parser.ts +1 -1
  254. package/src/extensions/config/hooks-config-loader.ts +1 -2
  255. package/src/extensions/config/index.ts +0 -4
  256. package/src/extensions/config/runtime-commands.ts +6 -0
  257. package/src/extensions/config/user-instruction-config-loader.ts +1 -4
  258. package/src/extensions/context/agentic-compaction.ts +3 -3
  259. package/src/extensions/context/basic-compaction.ts +2 -2
  260. package/src/extensions/context/compaction-shared.ts +5 -4
  261. package/src/extensions/context/compaction.ts +3 -3
  262. package/src/extensions/plugin/plugin-config-loader.ts +17 -2
  263. package/src/extensions/plugin/plugin-loader.ts +48 -4
  264. package/src/extensions/plugin/plugin-module-import.ts +0 -2
  265. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +93 -39
  266. package/src/extensions/plugin/plugin-sandbox.ts +47 -27
  267. package/src/extensions/plugin/plugin-targeting.ts +32 -0
  268. package/src/{tools → extensions/tools}/definitions.ts +31 -50
  269. package/src/{tools → extensions/tools}/executors/apply-patch.ts +69 -80
  270. package/src/{tools → extensions/tools}/executors/file-read.ts +29 -4
  271. package/src/{tools → extensions/tools}/executors/search.ts +196 -4
  272. package/src/{tools → extensions/tools}/index.ts +10 -0
  273. package/src/{tools → extensions/tools}/model-tool-routing.ts +1 -1
  274. package/src/{tools → extensions/tools}/presets.ts +31 -47
  275. package/src/extensions/tools/runtime.ts +261 -0
  276. package/src/{tools → extensions/tools}/schemas.ts +4 -2
  277. package/src/{team → extensions/tools/team}/multi-agent.ts +80 -17
  278. package/src/{team → extensions/tools/team}/spawn-agent-tool.ts +1 -7
  279. package/src/{team → extensions/tools/team}/subagent-prompts.ts +2 -2
  280. package/src/{team → extensions/tools/team}/team-tools.ts +84 -53
  281. package/src/{tools → extensions/tools}/types.ts +5 -3
  282. package/src/{runtime → hooks}/checkpoint-hooks.ts +27 -0
  283. package/src/{runtime → hooks}/hook-file-hooks.ts +14 -13
  284. package/src/hooks/index.ts +0 -7
  285. package/src/hooks/subprocess-runner.ts +1 -1
  286. package/src/hooks/subprocess.ts +57 -257
  287. package/src/hub/browser-websocket.ts +137 -0
  288. package/src/hub/client.ts +574 -0
  289. package/src/hub/connect.ts +156 -0
  290. package/src/hub/daemon-entry.ts +87 -0
  291. package/src/hub/daemon.ts +181 -0
  292. package/src/hub/defaults.ts +43 -0
  293. package/src/hub/discovery.ts +247 -0
  294. package/src/hub/index.ts +14 -0
  295. package/src/hub/native-transport.ts +31 -0
  296. package/src/hub/runtime-handlers.ts +140 -0
  297. package/src/hub/server.ts +1888 -0
  298. package/src/hub/session-client.ts +460 -0
  299. package/src/hub/start-shared-server.ts +58 -0
  300. package/src/hub/transport.ts +14 -0
  301. package/src/hub/ui-client.ts +122 -0
  302. package/src/hub/workspace.ts +19 -0
  303. package/src/index.ts +264 -199
  304. package/src/llms/configured-provider-registry.ts +193 -0
  305. package/src/llms/provider-defaults.ts +637 -0
  306. package/src/llms/provider-settings.ts +263 -0
  307. package/src/llms/runtime-config.ts +43 -0
  308. package/src/llms/runtime-registry.ts +171 -0
  309. package/src/llms/runtime-types.ts +121 -0
  310. package/src/runtime/history.ts +237 -0
  311. package/src/runtime/host.ts +200 -0
  312. package/src/runtime/index.ts +1 -0
  313. package/src/runtime/rules.ts +12 -0
  314. package/src/runtime/runtime-builder.ts +37 -29
  315. package/src/runtime/runtime-host.ts +206 -0
  316. package/src/{session → runtime}/runtime-oauth-token-manager.ts +12 -16
  317. package/src/runtime/session-runtime.ts +2 -26
  318. package/src/{session/session-agent-events.ts → services/agent-events.ts} +7 -7
  319. package/src/services/config.ts +5 -0
  320. package/src/services/global-settings.ts +122 -0
  321. package/src/services/local-runtime-bootstrap.ts +318 -0
  322. package/src/services/plugin-tools.ts +85 -0
  323. package/src/{providers → services/providers}/local-provider-registry.ts +6 -6
  324. package/src/{providers → services/providers}/local-provider-service.ts +46 -41
  325. package/src/{session → services}/session-artifacts.ts +7 -19
  326. package/src/{session/utils/helpers.ts → services/session-data.ts} +90 -80
  327. package/src/{session → services}/session-telemetry.ts +7 -9
  328. package/src/services/storage/artifact-store.ts +1 -0
  329. package/src/{storage → services/storage}/file-team-store.ts +2 -2
  330. package/src/{storage → services/storage}/provider-settings-legacy-migration.ts +6 -4
  331. package/src/{storage → services/storage}/provider-settings-manager.ts +3 -3
  332. package/src/services/storage/session-store.ts +1 -0
  333. package/src/{storage → services/storage}/sqlite-session-store.ts +7 -12
  334. package/src/{storage → services/storage}/sqlite-team-store.ts +4 -4
  335. package/src/{storage → services/storage}/team-store.ts +1 -1
  336. package/src/{session/utils → services}/usage.ts +1 -1
  337. package/src/{input → services/workspace}/file-indexer.ts +26 -2
  338. package/src/{input → services/workspace}/mention-enricher.ts +1 -1
  339. package/src/{session → services}/workspace-manifest.ts +18 -0
  340. package/src/session/file-session-service.ts +10 -8
  341. package/src/session/index.ts +10 -23
  342. package/src/session/persistence-service.ts +144 -528
  343. package/src/session/session-manifest-store.ts +158 -0
  344. package/src/session/session-row.ts +199 -0
  345. package/src/session/session-service.ts +43 -389
  346. package/src/session/session-team-coordination.ts +14 -7
  347. package/src/session/subagent-session-manager.ts +397 -0
  348. package/src/session/team-persistence-store.ts +176 -0
  349. package/src/session/workspace-manager.ts +1 -1
  350. package/src/transports/hub.ts +656 -0
  351. package/src/{session/default-session-manager.ts → transports/local.ts} +263 -200
  352. package/src/transports/remote.ts +26 -0
  353. package/src/transports/runtime-host-support.ts +140 -0
  354. package/src/{chat → types}/chat-schema.ts +4 -5
  355. package/src/types/config.ts +10 -9
  356. package/src/types/provider-settings.ts +11 -7
  357. package/src/{session/utils/types.ts → types/session.ts} +16 -5
  358. package/src/types/sessions.ts +21 -0
  359. package/src/types/storage.ts +1 -6
  360. package/src/types.ts +52 -19
  361. package/dist/chat/chat-schema.d.ts.map +0 -1
  362. package/dist/hooks/persistent.d.ts +0 -64
  363. package/dist/hooks/persistent.d.ts.map +0 -1
  364. package/dist/input/file-indexer.d.ts.map +0 -1
  365. package/dist/input/index.d.ts.map +0 -1
  366. package/dist/input/mention-enricher.d.ts.map +0 -1
  367. package/dist/prompt/default-system.d.ts +0 -2
  368. package/dist/prompt/default-system.d.ts.map +0 -1
  369. package/dist/providers/local-provider-registry.d.ts.map +0 -1
  370. package/dist/providers/local-provider-service.d.ts.map +0 -1
  371. package/dist/runtime/checkpoint-hooks.d.ts.map +0 -1
  372. package/dist/runtime/hook-file-hooks.d.ts.map +0 -1
  373. package/dist/session/default-session-manager.d.ts.map +0 -1
  374. package/dist/session/rpc-runtime-ensure.d.ts +0 -53
  375. package/dist/session/rpc-runtime-ensure.d.ts.map +0 -1
  376. package/dist/session/rpc-session-service.d.ts +0 -13
  377. package/dist/session/rpc-session-service.d.ts.map +0 -1
  378. package/dist/session/rpc-spawn-lease.d.ts +0 -8
  379. package/dist/session/rpc-spawn-lease.d.ts.map +0 -1
  380. package/dist/session/session-agent-events.d.ts.map +0 -1
  381. package/dist/session/session-artifacts.d.ts.map +0 -1
  382. package/dist/session/session-config-builder.d.ts +0 -16
  383. package/dist/session/session-config-builder.d.ts.map +0 -1
  384. package/dist/session/session-host.d.ts +0 -15
  385. package/dist/session/session-host.d.ts.map +0 -1
  386. package/dist/session/session-manager.d.ts +0 -62
  387. package/dist/session/session-manager.d.ts.map +0 -1
  388. package/dist/session/session-telemetry.d.ts.map +0 -1
  389. package/dist/session/sqlite-rpc-session-backend.d.ts +0 -31
  390. package/dist/session/sqlite-rpc-session-backend.d.ts.map +0 -1
  391. package/dist/session/utils/helpers.d.ts.map +0 -1
  392. package/dist/session/utils/types.d.ts.map +0 -1
  393. package/dist/session/utils/usage.d.ts.map +0 -1
  394. package/dist/session/workspace-manifest.d.ts +0 -5
  395. package/dist/session/workspace-manifest.d.ts.map +0 -1
  396. package/dist/storage/file-team-store.d.ts.map +0 -1
  397. package/dist/storage/provider-settings-legacy-migration.d.ts.map +0 -1
  398. package/dist/storage/provider-settings-manager.d.ts.map +0 -1
  399. package/dist/storage/sqlite-session-store.d.ts.map +0 -1
  400. package/dist/storage/sqlite-team-store.d.ts.map +0 -1
  401. package/dist/storage/team-store.d.ts.map +0 -1
  402. package/dist/team/delegated-agent.d.ts.map +0 -1
  403. package/dist/team/index.d.ts.map +0 -1
  404. package/dist/team/multi-agent.d.ts.map +0 -1
  405. package/dist/team/projections.d.ts.map +0 -1
  406. package/dist/team/runtime.d.ts.map +0 -1
  407. package/dist/team/spawn-agent-tool.d.ts.map +0 -1
  408. package/dist/team/subagent-prompts.d.ts.map +0 -1
  409. package/dist/team/team-tools.d.ts.map +0 -1
  410. package/dist/telemetry/ITelemetryAdapter.d.ts.map +0 -1
  411. package/dist/telemetry/OpenTelemetryAdapter.d.ts.map +0 -1
  412. package/dist/telemetry/OpenTelemetryProvider.d.ts.map +0 -1
  413. package/dist/telemetry/TelemetryLoggerSink.d.ts.map +0 -1
  414. package/dist/telemetry/TelemetryService.d.ts.map +0 -1
  415. package/dist/telemetry/core-events.d.ts.map +0 -1
  416. package/dist/telemetry/distinct-id.d.ts.map +0 -1
  417. package/dist/telemetry/index.d.ts.map +0 -1
  418. package/dist/telemetry/index.js +0 -15
  419. package/dist/tools/constants.d.ts.map +0 -1
  420. package/dist/tools/definitions.d.ts.map +0 -1
  421. package/dist/tools/executors/apply-patch-parser.d.ts.map +0 -1
  422. package/dist/tools/executors/apply-patch.d.ts.map +0 -1
  423. package/dist/tools/executors/bash.d.ts.map +0 -1
  424. package/dist/tools/executors/editor.d.ts.map +0 -1
  425. package/dist/tools/executors/file-read.d.ts.map +0 -1
  426. package/dist/tools/executors/index.d.ts.map +0 -1
  427. package/dist/tools/executors/search.d.ts.map +0 -1
  428. package/dist/tools/executors/web-fetch.d.ts.map +0 -1
  429. package/dist/tools/helpers.d.ts.map +0 -1
  430. package/dist/tools/index.d.ts.map +0 -1
  431. package/dist/tools/model-tool-routing.d.ts.map +0 -1
  432. package/dist/tools/presets.d.ts.map +0 -1
  433. package/dist/tools/schemas.d.ts.map +0 -1
  434. package/dist/tools/types.d.ts.map +0 -1
  435. package/src/ClineCore.test.ts +0 -150
  436. package/src/account/cline-account-service.test.ts +0 -185
  437. package/src/account/featurebase-token.test.ts +0 -175
  438. package/src/account/rpc.test.ts +0 -63
  439. package/src/auth/bounded-ttl-cache.test.ts +0 -38
  440. package/src/auth/client.test.ts +0 -69
  441. package/src/auth/cline.test.ts +0 -267
  442. package/src/auth/codex.test.ts +0 -170
  443. package/src/auth/oca.test.ts +0 -340
  444. package/src/auth/server.test.ts +0 -287
  445. package/src/auth/utils.test.ts +0 -128
  446. package/src/extensions/config/agent-config-loader.test.ts +0 -236
  447. package/src/extensions/config/hooks-config-loader.test.ts +0 -20
  448. package/src/extensions/config/runtime-commands.test.ts +0 -115
  449. package/src/extensions/config/unified-config-file-watcher.test.ts +0 -196
  450. package/src/extensions/config/user-instruction-config-loader.test.ts +0 -246
  451. package/src/extensions/context/compaction.test.ts +0 -483
  452. package/src/extensions/mcp/config-loader.test.ts +0 -238
  453. package/src/extensions/mcp/manager.test.ts +0 -105
  454. package/src/extensions/plugin/plugin-config-loader.test.ts +0 -182
  455. package/src/extensions/plugin/plugin-loader.test.ts +0 -292
  456. package/src/extensions/plugin/plugin-sandbox.test.ts +0 -423
  457. package/src/hooks/persistent.ts +0 -661
  458. package/src/input/file-indexer.d.ts +0 -11
  459. package/src/input/file-indexer.test.ts +0 -127
  460. package/src/input/mention-enricher.test.ts +0 -85
  461. package/src/prompt/default-system.ts +0 -21
  462. package/src/providers/local-provider-service.test.ts +0 -1062
  463. package/src/runtime/checkpoint-hooks.test.ts +0 -168
  464. package/src/runtime/hook-file-hooks.test.ts +0 -311
  465. package/src/runtime/runtime-builder.team-persistence.test.ts +0 -242
  466. package/src/runtime/runtime-builder.test.ts +0 -616
  467. package/src/runtime/runtime-parity.test.ts +0 -143
  468. package/src/session/default-session-manager.e2e.test.ts +0 -384
  469. package/src/session/default-session-manager.test.ts +0 -2473
  470. package/src/session/persistence-service.test.ts +0 -241
  471. package/src/session/rpc-runtime-ensure.ts +0 -521
  472. package/src/session/rpc-session-service.ts +0 -107
  473. package/src/session/rpc-spawn-lease.test.ts +0 -49
  474. package/src/session/rpc-spawn-lease.ts +0 -122
  475. package/src/session/runtime-oauth-token-manager.test.ts +0 -137
  476. package/src/session/session-config-builder.ts +0 -172
  477. package/src/session/session-host.test.ts +0 -89
  478. package/src/session/session-host.ts +0 -213
  479. package/src/session/session-manager.ts +0 -74
  480. package/src/session/session-service.team-persistence.test.ts +0 -48
  481. package/src/session/sqlite-rpc-session-backend.ts +0 -303
  482. package/src/session/utils/helpers.test.ts +0 -160
  483. package/src/storage/artifact-store.ts +0 -1
  484. package/src/storage/provider-settings-legacy-migration.test.ts +0 -424
  485. package/src/storage/provider-settings-manager.test.ts +0 -191
  486. package/src/storage/session-store.ts +0 -1
  487. package/src/team/multi-agent.lifecycle.test.ts +0 -201
  488. package/src/team/spawn-agent-tool.test.ts +0 -387
  489. package/src/team/team-tools.test.ts +0 -906
  490. package/src/telemetry/OpenTelemetryAdapter.test.ts +0 -157
  491. package/src/telemetry/OpenTelemetryProvider.test.ts +0 -326
  492. package/src/telemetry/TelemetryLoggerSink.test.ts +0 -42
  493. package/src/telemetry/TelemetryService.test.ts +0 -134
  494. package/src/telemetry/distinct-id.test.ts +0 -57
  495. package/src/tools/definitions.test.ts +0 -780
  496. package/src/tools/executors/bash.test.ts +0 -87
  497. package/src/tools/executors/editor.test.ts +0 -35
  498. package/src/tools/executors/file-read.test.ts +0 -49
  499. package/src/tools/model-tool-routing.test.ts +0 -86
  500. package/src/tools/presets.test.ts +0 -70
  501. /package/dist/{tools → extensions/tools}/constants.d.ts +0 -0
  502. /package/dist/{tools → extensions/tools}/executors/apply-patch-parser.d.ts +0 -0
  503. /package/dist/{tools → extensions/tools}/executors/bash.d.ts +0 -0
  504. /package/dist/{tools → extensions/tools}/executors/editor.d.ts +0 -0
  505. /package/dist/{tools → extensions/tools}/executors/file-read.d.ts +0 -0
  506. /package/dist/{tools → extensions/tools}/executors/index.d.ts +0 -0
  507. /package/dist/{tools → extensions/tools}/executors/web-fetch.d.ts +0 -0
  508. /package/dist/{tools → extensions/tools}/helpers.d.ts +0 -0
  509. /package/dist/{tools → extensions/tools}/schemas.d.ts +0 -0
  510. /package/dist/{team → extensions/tools/team}/delegated-agent.d.ts +0 -0
  511. /package/dist/{team → extensions/tools/team}/index.d.ts +0 -0
  512. /package/dist/{team → extensions/tools/team}/projections.d.ts +0 -0
  513. /package/dist/{team → extensions/tools/team}/runtime.d.ts +0 -0
  514. /package/dist/{team → extensions/tools/team}/subagent-prompts.d.ts +0 -0
  515. /package/dist/{telemetry → services/telemetry}/ITelemetryAdapter.d.ts +0 -0
  516. /package/dist/{telemetry → services/telemetry}/OpenTelemetryAdapter.d.ts +0 -0
  517. /package/dist/{telemetry → services/telemetry}/OpenTelemetryProvider.d.ts +0 -0
  518. /package/dist/{telemetry → services/telemetry}/TelemetryLoggerSink.d.ts +0 -0
  519. /package/dist/{telemetry → services/telemetry}/TelemetryService.d.ts +0 -0
  520. /package/dist/{telemetry → services/telemetry}/core-events.d.ts +0 -0
  521. /package/dist/{telemetry → services/telemetry}/distinct-id.d.ts +0 -0
  522. /package/dist/{telemetry → services/telemetry}/index.d.ts +0 -0
  523. /package/dist/{input → services/workspace}/file-indexer.d.ts +0 -0
  524. /package/dist/{input → services/workspace}/index.d.ts +0 -0
  525. /package/dist/{input → services/workspace}/mention-enricher.d.ts +0 -0
  526. /package/src/{tools → extensions/tools}/constants.ts +0 -0
  527. /package/src/{tools → extensions/tools}/executors/apply-patch-parser.ts +0 -0
  528. /package/src/{tools → extensions/tools}/executors/bash.ts +0 -0
  529. /package/src/{tools → extensions/tools}/executors/editor.ts +0 -0
  530. /package/src/{tools → extensions/tools}/executors/index.ts +0 -0
  531. /package/src/{tools → extensions/tools}/executors/web-fetch.ts +0 -0
  532. /package/src/{tools → extensions/tools}/helpers.ts +0 -0
  533. /package/src/{team → extensions/tools/team}/delegated-agent.ts +0 -0
  534. /package/src/{team → extensions/tools/team}/index.ts +0 -0
  535. /package/src/{team → extensions/tools/team}/projections.ts +0 -0
  536. /package/src/{team → extensions/tools/team}/runtime.ts +0 -0
  537. /package/src/{storage → services/storage}/index.ts +0 -0
  538. /package/src/{telemetry → services/telemetry}/ITelemetryAdapter.ts +0 -0
  539. /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.ts +0 -0
  540. /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.ts +0 -0
  541. /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.ts +0 -0
  542. /package/src/{telemetry → services/telemetry}/TelemetryService.ts +0 -0
  543. /package/src/{telemetry → services/telemetry}/core-events.ts +0 -0
  544. /package/src/{telemetry → services/telemetry}/distinct-id.ts +0 -0
  545. /package/src/{telemetry → services/telemetry}/index.ts +0 -0
  546. /package/src/{input → services/workspace}/index.ts +0 -0
@@ -1,395 +1,32 @@
1
- import {
2
- appendFileSync,
3
- existsSync,
4
- mkdirSync,
5
- readFileSync,
6
- renameSync,
7
- unlinkSync,
8
- writeFileSync,
9
- } from "node:fs";
10
- import { join } from "node:path";
11
- import type { TeamTeammateSpec } from "@clinebot/shared";
12
- import { resolveTeamDataDir } from "@clinebot/shared/storage";
13
- import type { SqliteSessionStore } from "../storage/sqlite-session-store";
14
- import type { AgentTeamsRuntime, TeamEvent } from "../team";
15
- import type { SessionSource, SessionStatus } from "../types/common";
1
+ import { existsSync, mkdirSync } from "node:fs";
2
+ import { resolveSessionDataDir } from "@clinebot/shared/storage";
3
+ import { nowIso } from "../services/session-artifacts";
4
+ import type { SqliteSessionStore } from "../services/storage/sqlite-session-store";
5
+ import type { SessionMessagesArtifactUploader } from "../types/session";
16
6
  import type {
17
7
  PersistedSessionUpdateInput,
18
8
  SessionPersistenceAdapter,
19
9
  } from "./persistence-service";
20
10
  import { UnifiedSessionPersistenceService } from "./persistence-service";
21
- import { nowIso } from "./session-artifacts";
22
- import type { SessionManifest } from "./session-manifest";
23
-
24
- export interface SessionRow {
25
- sessionId: string;
26
- source: string;
27
- pid: number;
28
- startedAt: string;
29
- endedAt?: string | null;
30
- exitCode?: number | null;
31
- status: SessionStatus;
32
- statusLock: number;
33
- interactive: boolean;
34
- provider: string;
35
- model: string;
36
- cwd: string;
37
- workspaceRoot: string;
38
- teamName?: string | null;
39
- enableTools: boolean;
40
- enableSpawn: boolean;
41
- enableTeams: boolean;
42
- parentSessionId?: string | null;
43
- parentAgentId?: string | null;
44
- agentId?: string | null;
45
- conversationId?: string | null;
46
- isSubagent: boolean;
47
- prompt?: string | null;
48
- metadata?: Record<string, unknown> | null;
49
- transcriptPath: string;
50
- hookPath: string;
51
- messagesPath?: string | null;
52
- updatedAt: string;
53
- }
54
-
55
- export interface CreateRootSessionInput {
56
- sessionId: string;
57
- source: SessionSource;
58
- pid: number;
59
- startedAt: string;
60
- interactive: boolean;
61
- provider: string;
62
- model: string;
63
- cwd: string;
64
- workspaceRoot: string;
65
- teamName?: string;
66
- enableTools: boolean;
67
- enableSpawn: boolean;
68
- enableTeams: boolean;
69
- prompt?: string;
70
- metadata?: Record<string, unknown>;
71
- transcriptPath: string;
72
- hookPath: string;
73
- messagesPath: string;
74
- }
75
-
76
- export interface CreateRootSessionWithArtifactsInput {
77
- sessionId: string;
78
- source: SessionSource;
79
- pid: number;
80
- interactive: boolean;
81
- provider: string;
82
- model: string;
83
- cwd: string;
84
- workspaceRoot: string;
85
- teamName?: string;
86
- enableTools: boolean;
87
- enableSpawn: boolean;
88
- enableTeams: boolean;
89
- prompt?: string;
90
- metadata?: Record<string, unknown>;
91
- startedAt?: string;
92
- }
93
-
94
- export interface RootSessionArtifacts {
95
- manifestPath: string;
96
- transcriptPath: string;
97
- hookPath: string;
98
- messagesPath: string;
99
- manifest: SessionManifest;
100
- }
101
-
102
- export interface UpsertSubagentInput {
103
- agentId: string;
104
- parentAgentId: string;
105
- conversationId: string;
106
- prompt?: string;
107
- rootSessionId?: string;
108
- }
109
-
110
- // ── SQLite helpers ───────────────────────────────────────────────────
111
-
112
- /** SELECT clause that aliases snake_case columns to camelCase SessionRow keys. */
113
- const SESSION_SELECT_COLUMNS = `
114
- session_id AS sessionId,
115
- source,
116
- pid,
117
- started_at AS startedAt,
118
- ended_at AS endedAt,
119
- exit_code AS exitCode,
120
- status,
121
- status_lock AS statusLock,
122
- interactive,
123
- provider,
124
- model,
125
- cwd,
126
- workspace_root AS workspaceRoot,
127
- team_name AS teamName,
128
- enable_tools AS enableTools,
129
- enable_spawn AS enableSpawn,
130
- enable_teams AS enableTeams,
131
- parent_session_id AS parentSessionId,
132
- parent_agent_id AS parentAgentId,
133
- agent_id AS agentId,
134
- conversation_id AS conversationId,
135
- is_subagent AS isSubagent,
136
- prompt,
137
- metadata_json AS metadata,
138
- transcript_path AS transcriptPath,
139
- hook_path AS hookPath,
140
- messages_path AS messagesPath,
141
- updated_at AS updatedAt`;
142
-
143
- /**
144
- * Patch a raw SQLite result into a proper SessionRow.
145
- * SQLite returns 0/1 for booleans and a JSON string for metadata —
146
- * this converts them in-place to avoid allocating a second object.
147
- */
148
- function patchSqliteRow(raw: Record<string, unknown>): SessionRow {
149
- raw.interactive = raw.interactive === 1;
150
- raw.enableTools = raw.enableTools === 1;
151
- raw.enableSpawn = raw.enableSpawn === 1;
152
- raw.enableTeams = raw.enableTeams === 1;
153
- raw.isSubagent = raw.isSubagent === 1;
154
- const meta = raw.metadata;
155
- if (typeof meta === "string" && meta.trim()) {
156
- try {
157
- const parsed = JSON.parse(meta) as unknown;
158
- raw.metadata =
159
- parsed && typeof parsed === "object" && !Array.isArray(parsed)
160
- ? parsed
161
- : null;
162
- } catch {
163
- raw.metadata = null;
164
- }
165
- } else {
166
- raw.metadata = null;
167
- }
168
- return raw as unknown as SessionRow;
169
- }
170
-
171
- function stringifyMetadata(
172
- metadata: Record<string, unknown> | null | undefined,
173
- ): string | null {
174
- if (!metadata || Object.keys(metadata).length === 0) return null;
175
- return JSON.stringify(metadata);
176
- }
177
-
178
- function reviveTeamStateDates(state: TeamRuntimeState): TeamRuntimeState {
179
- return {
180
- ...state,
181
- tasks: state.tasks.map((task) => ({
182
- ...task,
183
- createdAt: new Date(task.createdAt),
184
- updatedAt: new Date(task.updatedAt),
185
- })),
186
- mailbox: state.mailbox.map((message) => ({
187
- ...message,
188
- sentAt: new Date(message.sentAt),
189
- readAt: message.readAt ? new Date(message.readAt) : undefined,
190
- })),
191
- missionLog: state.missionLog.map((entry) => ({
192
- ...entry,
193
- ts: new Date(entry.ts),
194
- })),
195
- runs: (state.runs ?? []).map((run) => ({
196
- ...run,
197
- startedAt: new Date(run.startedAt),
198
- endedAt: run.endedAt ? new Date(run.endedAt) : undefined,
199
- nextAttemptAt: run.nextAttemptAt
200
- ? new Date(run.nextAttemptAt)
201
- : undefined,
202
- heartbeatAt: run.heartbeatAt ? new Date(run.heartbeatAt) : undefined,
203
- })),
204
- outcomes: (state.outcomes ?? []).map((outcome) => ({
205
- ...outcome,
206
- createdAt: new Date(outcome.createdAt),
207
- finalizedAt: outcome.finalizedAt
208
- ? new Date(outcome.finalizedAt)
209
- : undefined,
210
- })),
211
- outcomeFragments: (state.outcomeFragments ?? []).map((fragment) => ({
212
- ...fragment,
213
- createdAt: new Date(fragment.createdAt),
214
- reviewedAt: fragment.reviewedAt
215
- ? new Date(fragment.reviewedAt)
216
- : undefined,
217
- })),
218
- };
219
- }
220
-
221
- function sanitizeTeamName(name: string): string {
222
- return name
223
- .toLowerCase()
224
- .replace(/[^a-z0-9._-]+/g, "-")
225
- .replace(/^-+|-+$/g, "");
226
- }
227
-
228
- interface PersistedTeamEnvelope {
229
- version: 1;
230
- updatedAt: string;
231
- teamState: TeamRuntimeState;
232
- teammates: TeamTeammateSpec[];
233
- }
234
-
235
- type TeamRuntimeState = ReturnType<AgentTeamsRuntime["exportState"]>;
236
-
237
- export interface FileTeamPersistenceStoreOptions {
238
- teamName: string;
239
- baseDir?: string;
240
- }
241
-
242
- export class FileTeamPersistenceStore {
243
- private readonly dirPath: string;
244
- private readonly statePath: string;
245
- private readonly taskHistoryPath: string;
246
- private readonly teammateSpecs: Map<string, TeamTeammateSpec> = new Map();
247
-
248
- constructor(options: FileTeamPersistenceStoreOptions) {
249
- const safeTeamName = sanitizeTeamName(options.teamName);
250
- const baseDir = options.baseDir?.trim() || resolveTeamDataDir();
251
- this.dirPath = join(baseDir, safeTeamName);
252
- this.statePath = join(this.dirPath, "state.json");
253
- this.taskHistoryPath = join(this.dirPath, "task-history.jsonl");
254
- }
255
-
256
- loadState(): TeamRuntimeState | undefined {
257
- if (!existsSync(this.statePath)) {
258
- return undefined;
259
- }
260
- try {
261
- const raw = readFileSync(this.statePath, "utf8");
262
- const parsed = JSON.parse(raw) as PersistedTeamEnvelope;
263
- if (parsed.version !== 1 || !parsed.teamState) {
264
- return undefined;
265
- }
266
- for (const spec of parsed.teammates ?? []) {
267
- this.teammateSpecs.set(spec.agentId, spec);
268
- }
269
- return reviveTeamStateDates(parsed.teamState);
270
- } catch {
271
- return undefined;
272
- }
273
- }
274
-
275
- getTeammateSpecs(): TeamTeammateSpec[] {
276
- return Array.from(this.teammateSpecs.values());
277
- }
278
-
279
- upsertTeammateSpec(spec: TeamTeammateSpec): void {
280
- this.teammateSpecs.set(spec.agentId, spec);
281
- }
282
-
283
- removeTeammateSpec(agentId: string): void {
284
- this.teammateSpecs.delete(agentId);
285
- }
286
-
287
- persist(runtime: AgentTeamsRuntime): void {
288
- if (!this.hasPersistableState(runtime)) {
289
- this.clearPersistedState();
290
- return;
291
- }
292
- this.ensureDir();
293
- const envelope: PersistedTeamEnvelope = {
294
- version: 1,
295
- updatedAt: new Date().toISOString(),
296
- teamState: runtime.exportState(),
297
- teammates: Array.from(this.teammateSpecs.values()),
298
- };
299
- const tmpPath = `${this.statePath}.tmp`;
300
- writeFileSync(tmpPath, `${JSON.stringify(envelope, null, 2)}\n`, "utf8");
301
- renameSync(tmpPath, this.statePath);
302
- }
303
-
304
- appendTaskHistory(event: TeamEvent): void {
305
- let task: Record<string, unknown> = {};
306
- switch (event.type) {
307
- case "team_task_updated":
308
- task = event.task as unknown as Record<string, unknown>;
309
- break;
310
- case "team_message":
311
- task = {
312
- agentId: event.message.fromAgentId,
313
- toAgentId: event.message.toAgentId,
314
- subject: event.message.subject,
315
- taskId: event.message.taskId,
316
- };
317
- break;
318
- case "team_mission_log":
319
- task = {
320
- agentId: event.entry.agentId,
321
- kind: event.entry.kind,
322
- summary: event.entry.summary,
323
- taskId: event.entry.taskId,
324
- };
325
- break;
326
- case "teammate_spawned":
327
- case "teammate_shutdown":
328
- case "task_start":
329
- task = {
330
- agentId: event.agentId,
331
- message: "message" in event ? event.message : undefined,
332
- };
333
- break;
334
- case "task_end":
335
- task = {
336
- agentId: event.agentId,
337
- finishReason: event.result?.finishReason,
338
- error: event.error?.message,
339
- };
340
- break;
341
- case "agent_event":
342
- task = {
343
- agentId: event.agentId,
344
- eventType: event.event.type,
345
- };
346
- break;
347
- }
348
- this.ensureDir();
349
- appendFileSync(
350
- this.taskHistoryPath,
351
- `${JSON.stringify({
352
- ts: new Date().toISOString(),
353
- type: event.type,
354
- task,
355
- })}\n`,
356
- "utf8",
357
- );
358
- }
359
-
360
- private ensureDir(): void {
361
- if (!existsSync(this.dirPath)) {
362
- mkdirSync(this.dirPath, { recursive: true });
363
- }
364
- }
365
-
366
- private hasPersistableState(runtime: AgentTeamsRuntime): boolean {
367
- const state = runtime.exportState();
368
- if (this.teammateSpecs.size > 0) {
369
- return true;
370
- }
371
- if (state.members.some((member) => member.role === "teammate")) {
372
- return true;
373
- }
374
- return (
375
- state.tasks.length > 0 ||
376
- state.mailbox.length > 0 ||
377
- state.missionLog.length > 0
378
- );
379
- }
380
-
381
- private clearPersistedState(): void {
382
- if (existsSync(this.statePath)) {
383
- unlinkSync(this.statePath);
384
- }
385
- }
386
- }
11
+ import {
12
+ type CreateRootSessionInput,
13
+ patchSqliteRow,
14
+ SESSION_SELECT_COLUMNS,
15
+ type SessionRow,
16
+ stringifyMetadata,
17
+ } from "./session-row";
387
18
 
388
19
  class LocalSessionPersistenceAdapter implements SessionPersistenceAdapter {
389
- constructor(private readonly store: SqliteSessionStore) {}
20
+ constructor(
21
+ private readonly store: SqliteSessionStore,
22
+ private readonly sessionsDirPath: string = resolveSessionDataDir(),
23
+ ) {}
390
24
 
391
25
  ensureSessionsDir(): string {
392
- return this.store.ensureSessionsDir();
26
+ if (!existsSync(this.sessionsDirPath)) {
27
+ mkdirSync(this.sessionsDirPath, { recursive: true });
28
+ }
29
+ return this.sessionsDirPath;
393
30
  }
394
31
 
395
32
  async upsertSession(row: SessionRow): Promise<void> {
@@ -425,8 +62,8 @@ class LocalSessionPersistenceAdapter implements SessionPersistenceAdapter {
425
62
  row.isSubagent ? 1 : 0,
426
63
  row.prompt ?? null,
427
64
  stringifyMetadata(row.metadata),
428
- row.transcriptPath,
429
- row.hookPath,
65
+ "",
66
+ row.hookPath ?? "",
430
67
  row.messagesPath ?? null,
431
68
  row.updatedAt,
432
69
  ],
@@ -623,8 +260,17 @@ class LocalSessionPersistenceAdapter implements SessionPersistenceAdapter {
623
260
  }
624
261
 
625
262
  export class CoreSessionService extends UnifiedSessionPersistenceService {
626
- constructor(private readonly store: SqliteSessionStore) {
627
- super(new LocalSessionPersistenceAdapter(store));
263
+ constructor(
264
+ private readonly store: SqliteSessionStore,
265
+ options: {
266
+ sessionArtifactsDir?: string;
267
+ messagesArtifactUploader?: SessionMessagesArtifactUploader;
268
+ } = {},
269
+ ) {
270
+ super(
271
+ new LocalSessionPersistenceAdapter(store, options.sessionArtifactsDir),
272
+ options,
273
+ );
628
274
  }
629
275
 
630
276
  createRootSession(input: CreateRootSessionInput): void {
@@ -660,11 +306,19 @@ export class CoreSessionService extends UnifiedSessionPersistenceService {
660
306
  0,
661
307
  input.prompt ?? null,
662
308
  input.metadata ? JSON.stringify(input.metadata) : null,
663
- input.transcriptPath,
664
- input.hookPath,
309
+ "",
310
+ "",
665
311
  input.messagesPath,
666
312
  nowIso(),
667
313
  ],
668
314
  );
669
315
  }
670
316
  }
317
+
318
+ export type {
319
+ CreateRootSessionInput,
320
+ CreateRootSessionWithArtifactsInput,
321
+ RootSessionArtifacts,
322
+ SessionRow,
323
+ UpsertSubagentInput,
324
+ } from "./session-row";
@@ -1,11 +1,15 @@
1
- import { type AgentResult, formatUserInputBlock } from "@clinebot/shared";
2
- import type { TeamEvent } from "../team";
1
+ import {
2
+ type AgentMode,
3
+ type AgentResult,
4
+ formatUserInputBlock,
5
+ } from "@clinebot/shared";
6
+ import type { TeamEvent } from "../extensions/tools/team";
3
7
  import {
4
8
  buildTeamProgressSummary,
5
9
  toTeamProgressLifecycleEvent,
6
- } from "../team";
10
+ } from "../extensions/tools/team";
7
11
  import type { CoreSessionEvent } from "../types/events";
8
- import type { ActiveSession, TeamRunUpdate } from "./utils/types";
12
+ import type { ActiveSession, TeamRunUpdate } from "../types/session";
9
13
 
10
14
  export function trackTeamRunState(
11
15
  session: ActiveSession,
@@ -137,7 +141,7 @@ export function emitTeamProgress(
137
141
  emit: (event: CoreSessionEvent) => void,
138
142
  ): void {
139
143
  if (!session.runtime.teamRuntime) return;
140
- const teamName = session.config.teamName?.trim() || "team";
144
+ const teamName = session.runtime.teamRuntime.getTeamName();
141
145
  emit({
142
146
  type: "team_progress",
143
147
  payload: {
@@ -227,7 +231,10 @@ export function buildTeamRunContinuationPrompt(
227
231
 
228
232
  export function formatModePrompt(
229
233
  prompt: string,
230
- mode: "act" | "plan" | undefined,
234
+ mode: AgentMode | undefined,
231
235
  ): string {
232
- return formatUserInputBlock(prompt, mode === "plan" ? "plan" : "act");
236
+ return formatUserInputBlock(
237
+ prompt,
238
+ mode === "plan" ? "plan" : mode === "yolo" ? "yolo" : "act",
239
+ );
233
240
  }