@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
package/src/ClineCore.ts CHANGED
@@ -1,39 +1,52 @@
1
1
  import type {
2
2
  AgentConfig,
3
+ BasicLogger,
3
4
  ITelemetryService,
4
5
  ToolApprovalRequest,
5
6
  ToolApprovalResult,
6
7
  } from "@clinebot/shared";
7
- import type { TeamToolsFactory } from "./runtime/session-runtime";
8
- import {
9
- createSessionHost,
10
- type SessionBackend,
11
- type SessionHost,
12
- } from "./session/session-host";
13
- import type { StartSessionInput } from "./session/session-manager";
14
- import type { ToolExecutors } from "./tools";
8
+ import type { ToolExecutors } from "./extensions/tools";
9
+ import { hydrateSessionHistory } from "./runtime/history";
10
+ import type { SessionBackend } from "./runtime/host";
11
+ import { createRuntimeHost } from "./runtime/host";
12
+ import type {
13
+ LocalRuntimeStartOptions,
14
+ RuntimeHost,
15
+ RuntimeHostMode,
16
+ RuntimeHostSubscribeOptions,
17
+ StartSessionInput,
18
+ StartSessionResult,
19
+ } from "./runtime/runtime-host";
20
+ import { splitCoreSessionConfig } from "./runtime/runtime-host";
21
+ import type { CoreSessionConfig } from "./types/config";
22
+ import type { CoreSessionEvent } from "./types/events";
23
+ import type { SessionMessagesArtifactUploader } from "./types/session";
15
24
 
16
- /** Advanced options for connecting to or spawning the Cline RPC server. */
17
- export interface RpcOptions {
18
- /**
19
- * The address of the Cline RPC server to connect to.
20
- * Defaults to the `CLINE_RPC_ADDRESS` env var, or the SDK default address if unset.
21
- */
22
- address?: string;
23
- /**
24
- * When `true` (default), automatically spawns a background RPC server process if one is
25
- * not already running.
26
- */
27
- autoStart?: boolean;
28
- /**
29
- * Number of connection attempts made to the RPC server after it is spawned.
30
- * Defaults to `5`.
31
- */
32
- connectAttempts?: number;
33
- /**
34
- * Milliseconds to wait between RPC connection attempts. Defaults to `100`.
35
- */
36
- connectDelayMs?: number;
25
+ export interface HubOptions {
26
+ endpoint?: string;
27
+ authToken?: string;
28
+ strategy?: "prefer-hub" | "require-hub";
29
+ clientType?: string;
30
+ displayName?: string;
31
+ workspaceRoot?: string;
32
+ cwd?: string;
33
+ }
34
+
35
+ export interface RemoteOptions {
36
+ endpoint: string;
37
+ authToken?: string;
38
+ clientType?: string;
39
+ displayName?: string;
40
+ workspaceRoot?: string;
41
+ cwd?: string;
42
+ }
43
+
44
+ export type { RuntimeHostMode };
45
+
46
+ export interface ClineCoreStartInput
47
+ extends Omit<StartSessionInput, "config" | "localRuntime"> {
48
+ config: CoreSessionConfig;
49
+ localRuntime?: LocalRuntimeStartOptions;
37
50
  }
38
51
 
39
52
  export interface ClineCoreOptions {
@@ -49,17 +62,23 @@ export interface ClineCoreOptions {
49
62
  */
50
63
  distinctId?: string;
51
64
  /**
52
- * Controls how the session backend is selected:
53
- * - `"auto"` (default) — connects to a running RPC server if available, starts one in the
54
- * background if `rpc.autoStart` is true, and falls back to local SQLite/file storage.
55
- * - `"rpc"` — requires an RPC server; throws if one is not reachable.
56
- * - `"local"` — always uses local SQLite (or file-based) storage; never touches RPC.
65
+ * Controls how the runtime host is selected:
66
+ * - `"auto"` (default) — prefers a compatible local hub when one is available and falls
67
+ * back to local in-process execution when not.
68
+ * - `"hub"` — requires a compatible websocket hub runtime; throws if one is not reachable.
69
+ * - `"remote"` — requires an explicit remote websocket hub endpoint.
70
+ * - `"local"` — always uses local in-process execution and local SQLite/file storage.
57
71
  */
58
- backendMode?: "auto" | "rpc" | "local";
72
+ backendMode?: RuntimeHostMode;
59
73
  /**
60
- * RPC server connection options. Only relevant when `backendMode` is `"auto"` or `"rpc"`.
74
+ * Hub runtime connection options. Used when `backendMode` is `"hub"` or when `"auto"`
75
+ * should prefer a shared local hub if available.
61
76
  */
62
- rpc?: RpcOptions;
77
+ hub?: HubOptions;
78
+ /**
79
+ * Remote hub connection options. Only relevant when `backendMode` is `"remote"`.
80
+ */
81
+ remote?: RemoteOptions;
63
82
  /**
64
83
  * Override one or more default tool executors (e.g. file I/O, shell, browser).
65
84
  * Partial — only the keys you supply are replaced; the rest use built-in implementations.
@@ -70,6 +89,11 @@ export interface ClineCoreOptions {
70
89
  * If omitted, telemetry is a no-op.
71
90
  */
72
91
  telemetry?: ITelemetryService;
92
+ /**
93
+ * Optional structured logger for core-side operational diagnostics such as
94
+ * runtime-host selection and fallback decisions.
95
+ */
96
+ logger?: BasicLogger;
73
97
  /**
74
98
  * Per-tool approval policies that control whether a tool runs automatically,
75
99
  * requires user confirmation, or is blocked entirely.
@@ -83,29 +107,45 @@ export interface ClineCoreOptions {
83
107
  requestToolApproval?: (
84
108
  request: ToolApprovalRequest,
85
109
  ) => Promise<ToolApprovalResult>;
110
+ /**
111
+ * Optional hook invoked after `messages.json` is persisted to disk.
112
+ * Consumers can use this to mirror session transcripts into remote storage.
113
+ */
114
+ messagesArtifactUploader?: SessionMessagesArtifactUploader;
115
+ /**
116
+ * Custom `fetch` implementation forwarded to the AI gateway providers used
117
+ * by local sessions. When supplied, it is threaded into each
118
+ * `ProviderConfig.fetch` built during session bootstrap, which in turn
119
+ * populates `GatewayProviderSettings.fetch` (and the top-level
120
+ * `GatewayConfig.fetch` fallback) so hosts can inject custom HTTP behavior
121
+ * such as proxies, retries, tracing, or test doubles.
122
+ *
123
+ * Per-session or per-provider overrides still win: an explicit
124
+ * `config.fetch` on `CoreSessionConfig` or a stored provider-level `fetch`
125
+ * takes precedence over this default.
126
+ *
127
+ * Applies only to sessions executed in this process (local and fallback-
128
+ * to-local auto mode). For hub and remote runtimes the HTTP call happens
129
+ * inside the process that owns the gateway, so configure `fetch` there:
130
+ * - `startHubServer({ fetch })` / `ensureHubServer({ fetch })` from
131
+ * `@clinebot/hub`
132
+ * - `createLocalHubScheduleRuntimeHandlers({ fetch })` from
133
+ * `@clinebot/core/hub` for the scheduler
134
+ */
135
+ fetch?: typeof fetch;
86
136
  /**
87
137
  * An already-constructed session backend to use instead of resolving one automatically.
88
138
  * Intended for testing or embedding a custom persistence layer.
89
139
  * @internal
90
140
  */
91
141
  sessionService?: SessionBackend;
92
- /**
93
- * Factory that creates team management tools for the multi-agent team system.
94
- * When provided, team tools are registered whenever `enableAgentTeams` is `true`
95
- * on a session config.
96
- *
97
- * Consumers that depend on `@clinebot/enterprise` can pass
98
- * `bootstrapAgentTeams` here directly.
99
- */
100
- teamToolsFactory?: TeamToolsFactory;
101
142
  /**
102
143
  * Optional hook invoked before each session starts.
103
144
  * Use this to prepare workspace-scoped runtime state and then return an
104
- * adapter that mutates the `StartSessionInput` generically before core
105
- * builds the runtime.
145
+ * adapter that mutates the shared session input before core starts the run.
106
146
  */
107
147
  prepare?: (
108
- input: StartSessionInput,
148
+ input: ClineCoreStartInput,
109
149
  ) =>
110
150
  | Promise<StartSessionBootstrap | undefined>
111
151
  | StartSessionBootstrap
@@ -114,8 +154,8 @@ export interface ClineCoreOptions {
114
154
 
115
155
  export interface StartSessionBootstrap {
116
156
  applyToStartSessionInput(
117
- input: StartSessionInput,
118
- ): Promise<StartSessionInput> | StartSessionInput;
157
+ input: ClineCoreStartInput,
158
+ ): Promise<ClineCoreStartInput> | ClineCoreStartInput;
119
159
  dispose?(): Promise<void> | void;
120
160
  }
121
161
 
@@ -130,11 +170,12 @@ export interface StartSessionBootstrap {
130
170
  * const session = await cline.start({ ... });
131
171
  * ```
132
172
  */
133
- export class ClineCore implements SessionHost {
173
+ export class ClineCore implements RuntimeHost {
134
174
  readonly clientName: string | undefined;
135
- private readonly host: SessionHost;
175
+ readonly runtimeAddress: string | undefined;
176
+ private readonly host: RuntimeHost;
136
177
  private readonly prepare: ClineCoreOptions["prepare"] | undefined;
137
- private readonly teamToolsFactory: TeamToolsFactory | undefined;
178
+ private readonly defaultToolExecutors: Partial<ToolExecutors> | undefined;
138
179
  private readonly activeSessionBootstraps = new Map<
139
180
  string,
140
181
  StartSessionBootstrap
@@ -142,15 +183,17 @@ export class ClineCore implements SessionHost {
142
183
  private readonly unsubscribeBootstrapCleanup: () => void;
143
184
 
144
185
  private constructor(
145
- host: SessionHost,
186
+ host: RuntimeHost,
146
187
  clientName: string | undefined,
188
+ runtimeAddress: string | undefined,
147
189
  prepare: ClineCoreOptions["prepare"],
148
- teamToolsFactory: TeamToolsFactory | undefined,
190
+ defaultToolExecutors: Partial<ToolExecutors> | undefined,
149
191
  ) {
150
192
  this.clientName = clientName;
193
+ this.runtimeAddress = runtimeAddress;
151
194
  this.host = host;
152
195
  this.prepare = prepare;
153
- this.teamToolsFactory = teamToolsFactory;
196
+ this.defaultToolExecutors = defaultToolExecutors;
154
197
  this.unsubscribeBootstrapCleanup = this.host.subscribe((event) => {
155
198
  if (event.type !== "ended") {
156
199
  return;
@@ -160,12 +203,13 @@ export class ClineCore implements SessionHost {
160
203
  }
161
204
 
162
205
  static async create(options: ClineCoreOptions = {}): Promise<ClineCore> {
163
- const host = await createSessionHost(options);
206
+ const host = await createRuntimeHost(options);
164
207
  return new ClineCore(
165
208
  host,
166
209
  options.clientName,
210
+ host.runtimeAddress,
167
211
  options.prepare,
168
- options.teamToolsFactory,
212
+ options.defaultToolExecutors,
169
213
  );
170
214
  }
171
215
 
@@ -178,16 +222,66 @@ export class ClineCore implements SessionHost {
178
222
  await Promise.resolve(bootstrap.dispose?.());
179
223
  }
180
224
 
181
- start: SessionHost["start"] = async (input) => {
182
- const inputWithFactory: StartSessionInput = this.teamToolsFactory
183
- ? { teamToolsFactory: this.teamToolsFactory, ...input }
184
- : input;
185
- const bootstrap = await this.prepare?.(inputWithFactory);
225
+ private toClineCoreStartInput(
226
+ input: StartSessionInput | ClineCoreStartInput,
227
+ ): ClineCoreStartInput {
228
+ const config = input.config as CoreSessionConfig;
229
+ return "providerId" in config
230
+ ? {
231
+ ...input,
232
+ config: {
233
+ ...config,
234
+ ...(input.localRuntime?.configOverrides ?? {}),
235
+ },
236
+ localRuntime: input.localRuntime
237
+ ? {
238
+ ...input.localRuntime,
239
+ configOverrides: input.localRuntime.configOverrides,
240
+ }
241
+ : undefined,
242
+ }
243
+ : (input as ClineCoreStartInput);
244
+ }
245
+
246
+ private normalizeStartInput(input: ClineCoreStartInput): StartSessionInput {
247
+ const split = splitCoreSessionConfig(input.config);
248
+ const localRuntime =
249
+ split.localRuntime || input.localRuntime || this.defaultToolExecutors
250
+ ? {
251
+ ...(split.localRuntime ?? {}),
252
+ ...(input.localRuntime ?? {}),
253
+ configOverrides: {
254
+ ...(split.localRuntime?.configOverrides ?? {}),
255
+ ...(input.localRuntime?.configOverrides ?? {}),
256
+ },
257
+ defaultToolExecutors: {
258
+ ...(this.defaultToolExecutors ?? {}),
259
+ ...(split.localRuntime?.defaultToolExecutors ?? {}),
260
+ ...(input.localRuntime?.defaultToolExecutors ?? {}),
261
+ },
262
+ }
263
+ : undefined;
264
+ return {
265
+ ...input,
266
+ ...split,
267
+ ...(localRuntime ? { localRuntime } : {}),
268
+ };
269
+ }
270
+
271
+ start(input: StartSessionInput): Promise<StartSessionResult>;
272
+ start(input: ClineCoreStartInput): Promise<StartSessionResult>;
273
+ async start(
274
+ input: StartSessionInput | ClineCoreStartInput,
275
+ ): Promise<StartSessionResult> {
276
+ const clineCoreInput = this.toClineCoreStartInput(input);
277
+ const bootstrap = await this.prepare?.(clineCoreInput);
186
278
  try {
187
- const effectiveInput = bootstrap
188
- ? await bootstrap.applyToStartSessionInput(inputWithFactory)
189
- : inputWithFactory;
190
- const result = await this.host.start(effectiveInput);
279
+ const preparedInput = bootstrap
280
+ ? await bootstrap.applyToStartSessionInput(clineCoreInput)
281
+ : clineCoreInput;
282
+ const result = await this.host.start(
283
+ this.normalizeStartInput(preparedInput),
284
+ );
191
285
  if (bootstrap) {
192
286
  const activeSession = await this.host.get(result.sessionId);
193
287
  if (activeSession) {
@@ -201,16 +295,16 @@ export class ClineCore implements SessionHost {
201
295
  await Promise.resolve(bootstrap?.dispose?.());
202
296
  throw error;
203
297
  }
204
- };
205
- send: SessionHost["send"] = (...args) => this.host.send(...args);
206
- getAccumulatedUsage: SessionHost["getAccumulatedUsage"] = (...args) =>
298
+ }
299
+ send: RuntimeHost["send"] = (...args) => this.host.send(...args);
300
+ getAccumulatedUsage: RuntimeHost["getAccumulatedUsage"] = (...args) =>
207
301
  this.host.getAccumulatedUsage(...args);
208
- abort: SessionHost["abort"] = (...args) => this.host.abort(...args);
209
- stop: SessionHost["stop"] = async (sessionId) => {
302
+ abort: RuntimeHost["abort"] = (...args) => this.host.abort(...args);
303
+ stop: RuntimeHost["stop"] = async (sessionId) => {
210
304
  await this.host.stop(sessionId);
211
305
  await this.disposeSessionBootstrap(sessionId);
212
306
  };
213
- dispose: SessionHost["dispose"] = async (...args) => {
307
+ dispose: RuntimeHost["dispose"] = async (...args) => {
214
308
  try {
215
309
  await this.host.dispose(...args);
216
310
  } finally {
@@ -221,23 +315,27 @@ export class ClineCore implements SessionHost {
221
315
  );
222
316
  }
223
317
  };
224
- get: SessionHost["get"] = (...args) => this.host.get(...args);
225
- list: SessionHost["list"] = (...args) => this.host.list(...args);
226
- delete: SessionHost["delete"] = async (sessionId) => {
318
+ get: RuntimeHost["get"] = (...args) => this.host.get(...args);
319
+ list: RuntimeHost["list"] = async (limit = 200) =>
320
+ await hydrateSessionHistory(this.host, await this.host.list(limit));
321
+ delete: RuntimeHost["delete"] = async (sessionId) => {
227
322
  const deleted = await this.host.delete(sessionId);
228
323
  if (deleted) {
229
324
  await this.disposeSessionBootstrap(sessionId);
230
325
  }
231
326
  return deleted;
232
327
  };
233
- readMessages: SessionHost["readMessages"] = (...args) =>
328
+ update: RuntimeHost["update"] = (...args) => this.host.update(...args);
329
+ readMessages: RuntimeHost["readMessages"] = (...args) =>
234
330
  this.host.readMessages(...args);
235
- readTranscript: SessionHost["readTranscript"] = (...args) =>
236
- this.host.readTranscript(...args);
237
- readHooks: SessionHost["readHooks"] = (...args) =>
238
- this.host.readHooks(...args);
239
- subscribe: SessionHost["subscribe"] = (...args) =>
240
- this.host.subscribe(...args);
241
- updateSessionModel: SessionHost["updateSessionModel"] = (...args) =>
331
+ handleHookEvent: RuntimeHost["handleHookEvent"] = (...args) =>
332
+ this.host.handleHookEvent(...args);
333
+ subscribe(
334
+ listener: (event: CoreSessionEvent) => void,
335
+ options?: RuntimeHostSubscribeOptions,
336
+ ): () => void {
337
+ return this.host.subscribe(listener, options);
338
+ }
339
+ updateSessionModel: RuntimeHost["updateSessionModel"] = (...args) =>
242
340
  this.host.updateSessionModel?.(...args) ?? Promise.resolve();
243
341
  }
@@ -4,10 +4,10 @@ export {
4
4
  } from "./cline-account-service";
5
5
  export {
6
6
  type ClineAccountOperations,
7
- executeRpcClineAccountAction,
8
- isRpcClineAccountActionRequest,
7
+ executeClineAccountAction,
8
+ isClineAccountActionRequest,
9
+ type ProviderActionExecutor,
9
10
  RpcClineAccountService,
10
- type RpcProviderActionExecutor,
11
11
  } from "./rpc";
12
12
  export type {
13
13
  ClineAccountBalance,
@@ -1,6 +1,6 @@
1
1
  import type {
2
- RpcClineAccountActionRequest,
3
- RpcProviderActionRequest,
2
+ ClineAccountActionRequest,
3
+ ProviderActionRequest,
4
4
  } from "@clinebot/shared";
5
5
  import type {
6
6
  ClineAccountBalance,
@@ -34,14 +34,14 @@ export interface ClineAccountOperations {
34
34
  fetchFeaturebaseToken?(): Promise<FeaturebaseTokenResponse | undefined>;
35
35
  }
36
36
 
37
- export function isRpcClineAccountActionRequest(
38
- request: RpcProviderActionRequest,
39
- ): request is RpcClineAccountActionRequest {
37
+ export function isClineAccountActionRequest(
38
+ request: ProviderActionRequest,
39
+ ): request is ClineAccountActionRequest {
40
40
  return request.action === "clineAccount";
41
41
  }
42
42
 
43
- export async function executeRpcClineAccountAction(
44
- request: RpcClineAccountActionRequest,
43
+ export async function executeClineAccountAction(
44
+ request: ClineAccountActionRequest,
45
45
  service: ClineAccountOperations,
46
46
  ): Promise<unknown> {
47
47
  switch (request.operation) {
@@ -76,16 +76,16 @@ export async function executeRpcClineAccountAction(
76
76
  }
77
77
  }
78
78
 
79
- export interface RpcProviderActionExecutor {
80
- runProviderAction(request: RpcProviderActionRequest): Promise<{
79
+ export interface ProviderActionExecutor {
80
+ runProviderAction(request: ProviderActionRequest): Promise<{
81
81
  result: unknown;
82
82
  }>;
83
83
  }
84
84
 
85
85
  export class RpcClineAccountService implements ClineAccountOperations {
86
- private readonly executor: RpcProviderActionExecutor;
86
+ private readonly executor: ProviderActionExecutor;
87
87
 
88
- constructor(executor: RpcProviderActionExecutor) {
88
+ constructor(executor: ProviderActionExecutor) {
89
89
  this.executor = executor;
90
90
  }
91
91
 
@@ -178,7 +178,7 @@ export class RpcClineAccountService implements ClineAccountOperations {
178
178
  });
179
179
  }
180
180
 
181
- private async request<T>(request: RpcClineAccountActionRequest): Promise<T> {
181
+ private async request<T>(request: ClineAccountActionRequest): Promise<T> {
182
182
  const response = await this.executor.runProviderAction(request);
183
183
  return response.result as T;
184
184
  }
package/src/auth/cline.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  captureAuthStarted,
6
6
  captureAuthSucceeded,
7
7
  identifyAccount,
8
- } from "../telemetry/core-events";
8
+ } from "../services/telemetry/core-events";
9
9
  import { startLocalOAuthServer } from "./server";
10
10
  import type {
11
11
  OAuthCredentials,
package/src/auth/codex.ts CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  captureAuthStarted,
14
14
  captureAuthSucceeded,
15
15
  identifyAccount,
16
- } from "../telemetry/core-events";
16
+ } from "../services/telemetry/core-events";
17
17
  import { startLocalOAuthServer } from "./server";
18
18
  import type {
19
19
  OAuthCredentials,
package/src/auth/oca.ts CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  captureAuthStarted,
7
7
  captureAuthSucceeded,
8
8
  identifyAccount,
9
- } from "../telemetry/core-events";
9
+ } from "../services/telemetry/core-events";
10
10
  import { BoundedTtlCache } from "./bounded-ttl-cache";
11
11
  import { startLocalOAuthServer } from "./server";
12
12
  import type {
@@ -0,0 +1,5 @@
1
+ export * from "./resource-limiter";
2
+ export * from "./schedule-command-service";
3
+ export * from "./schedule-service";
4
+ export * from "./scheduler";
5
+ export * from "./sqlite-schedule-store";
@@ -0,0 +1,46 @@
1
+ export class ResourceLimiter {
2
+ private readonly globalMaxConcurrency: number;
3
+ private readonly activeExecutions = new Map<string, Set<string>>();
4
+
5
+ constructor(globalMaxConcurrency: number) {
6
+ this.globalMaxConcurrency = Math.max(1, Math.floor(globalMaxConcurrency));
7
+ }
8
+
9
+ public acquire(
10
+ scheduleId: string,
11
+ executionId: string,
12
+ maxParallel: number,
13
+ ): boolean {
14
+ if (this.getGlobalActiveCount() >= this.globalMaxConcurrency) {
15
+ return false;
16
+ }
17
+ const perScheduleLimit = Math.max(1, Math.floor(maxParallel));
18
+ const scheduleExecutions =
19
+ this.activeExecutions.get(scheduleId) ?? new Set<string>();
20
+ if (scheduleExecutions.size >= perScheduleLimit) {
21
+ return false;
22
+ }
23
+ scheduleExecutions.add(executionId);
24
+ this.activeExecutions.set(scheduleId, scheduleExecutions);
25
+ return true;
26
+ }
27
+
28
+ public release(scheduleId: string, executionId: string): void {
29
+ const executions = this.activeExecutions.get(scheduleId);
30
+ if (!executions) {
31
+ return;
32
+ }
33
+ executions.delete(executionId);
34
+ if (executions.size === 0) {
35
+ this.activeExecutions.delete(scheduleId);
36
+ }
37
+ }
38
+
39
+ public getGlobalActiveCount(): number {
40
+ let total = 0;
41
+ for (const executions of this.activeExecutions.values()) {
42
+ total += executions.size;
43
+ }
44
+ return total;
45
+ }
46
+ }