@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
@@ -0,0 +1,318 @@
1
+ import type {
2
+ AgentConfig,
3
+ AgentHooks,
4
+ ITelemetryService,
5
+ Tool,
6
+ ToolApprovalRequest,
7
+ ToolApprovalResult,
8
+ WorkspaceInfo,
9
+ } from "@clinebot/shared";
10
+ import { resolveAndLoadAgentPlugins } from "../extensions/plugin/plugin-config-loader";
11
+ import type {
12
+ PluginInitializationFailure,
13
+ PluginInitializationWarning,
14
+ } from "../extensions/plugin/plugin-load-report";
15
+ import type { ToolExecutors } from "../extensions/tools";
16
+ import type { TeamEvent } from "../extensions/tools/team";
17
+ import { createCheckpointHooks } from "../hooks/checkpoint-hooks";
18
+ import {
19
+ createHookAuditHooks,
20
+ createHookConfigFileHooks,
21
+ mergeAgentHooks,
22
+ } from "../hooks/hook-file-hooks";
23
+ import type {
24
+ LocalRuntimeConfigOverrides,
25
+ LocalRuntimeStartOptions,
26
+ StartSessionInput,
27
+ } from "../runtime/runtime-host";
28
+ import type { RuntimeBuilderInput } from "../runtime/session-runtime";
29
+ import type { CoreSessionConfig } from "../types/config";
30
+ import {
31
+ type ProviderConfig,
32
+ type ProviderSettings,
33
+ toProviderConfig,
34
+ } from "../types/provider-settings";
35
+ import { resolveWorkspacePath } from "./config";
36
+ import { filterExtensionToolRegistrations } from "./global-settings";
37
+ import { hasRuntimeHooks, mergeAgentExtensions } from "./session-data";
38
+ import type { ProviderSettingsManager } from "./storage/provider-settings-manager";
39
+ import { buildWorkspaceMetadataWithInfo } from "./workspace-manifest";
40
+
41
+ function formatPluginFailure(failure: PluginInitializationFailure): string {
42
+ const label = failure.pluginName ?? failure.pluginPath;
43
+ return `${label}: ${failure.message}`;
44
+ }
45
+
46
+ function logPluginDiagnostics(
47
+ failures: PluginInitializationFailure[],
48
+ warnings: PluginInitializationWarning[],
49
+ logger: CoreSessionConfig["logger"],
50
+ ): void {
51
+ if (warnings.length > 0) {
52
+ for (const warning of warnings) {
53
+ logger?.log(warning.message, { severity: "warn" });
54
+ }
55
+ }
56
+ if (failures.length === 0) {
57
+ return;
58
+ }
59
+ const preview = failures.slice(0, 3).map(formatPluginFailure).join("; ");
60
+ const suffix = failures.length > 3 ? `; and ${failures.length - 3} more` : "";
61
+ logger?.log(
62
+ `Some plugins failed to initialize. ${preview}${suffix}. Use --verbose for more details.`,
63
+ { severity: "warn" },
64
+ );
65
+ for (const failure of failures) {
66
+ logger?.log(
67
+ `Plugin initialization failed (${failure.phase}) for ${failure.pluginPath}`,
68
+ {
69
+ severity: "warn",
70
+ stack: failure.stack,
71
+ pluginPath: failure.pluginPath,
72
+ pluginName: failure.pluginName,
73
+ },
74
+ );
75
+ }
76
+ }
77
+
78
+ function resolveReasoningSettings(
79
+ config: CoreSessionConfig,
80
+ storedReasoning: ProviderSettings["reasoning"],
81
+ ): ProviderSettings["reasoning"] {
82
+ const hasThinking = typeof config.thinking === "boolean";
83
+ const hasEffort = typeof config.reasoningEffort === "string";
84
+ if (!hasThinking && !hasEffort) return storedReasoning;
85
+ return {
86
+ ...(storedReasoning ?? {}),
87
+ ...(hasThinking ? { enabled: config.thinking } : {}),
88
+ ...(hasEffort ? { effort: config.reasoningEffort } : {}),
89
+ };
90
+ }
91
+
92
+ function buildProviderConfig(
93
+ config: CoreSessionConfig,
94
+ providerSettingsManager: ProviderSettingsManager,
95
+ modelCatalogDefaults?: Partial<ProviderSettings["modelCatalog"]>,
96
+ defaultFetch?: typeof fetch,
97
+ ): ProviderConfig {
98
+ const stored = providerSettingsManager.getProviderSettings(config.providerId);
99
+ const modelCatalog =
100
+ modelCatalogDefaults || stored?.modelCatalog
101
+ ? {
102
+ ...(modelCatalogDefaults ?? {}),
103
+ ...(stored?.modelCatalog ?? {}),
104
+ }
105
+ : undefined;
106
+ const settings: ProviderSettings = {
107
+ ...(stored ?? {}),
108
+ provider: config.providerId,
109
+ model: config.modelId,
110
+ apiKey: config.apiKey ?? stored?.apiKey,
111
+ baseUrl: config.baseUrl ?? stored?.baseUrl,
112
+ headers: config.headers ?? stored?.headers,
113
+ reasoning: resolveReasoningSettings(config, stored?.reasoning),
114
+ modelCatalog,
115
+ };
116
+ const providerConfig = toProviderConfig(settings);
117
+ if (config.knownModels) {
118
+ providerConfig.knownModels = config.knownModels;
119
+ }
120
+ if (config.extensionContext) {
121
+ providerConfig.extensionContext = config.extensionContext;
122
+ }
123
+ // Thread a host-provided custom fetch through to the AI gateway providers.
124
+ // Precedence: explicit per-session config > stored provider settings > host default.
125
+ const sessionFetch = (config as { fetch?: typeof fetch }).fetch;
126
+ const resolvedFetch = sessionFetch ?? providerConfig.fetch ?? defaultFetch;
127
+ if (resolvedFetch) {
128
+ providerConfig.fetch = resolvedFetch;
129
+ }
130
+ return providerConfig;
131
+ }
132
+
133
+ export interface PrepareLocalRuntimeBootstrapOptions {
134
+ input: StartSessionInput;
135
+ localRuntime?: LocalRuntimeStartOptions;
136
+ sessionId: string;
137
+ providerSettingsManager: ProviderSettingsManager;
138
+ defaultTelemetry?: ITelemetryService;
139
+ defaultToolExecutors?: Partial<ToolExecutors>;
140
+ defaultToolPolicies?: AgentConfig["toolPolicies"];
141
+ defaultRequestToolApproval?: (
142
+ request: ToolApprovalRequest,
143
+ ) => Promise<ToolApprovalResult>;
144
+ /**
145
+ * Host-level default `fetch` threaded into `ProviderConfig.fetch` so the
146
+ * AI gateway providers can use a custom HTTP implementation.
147
+ */
148
+ defaultFetch?: typeof fetch;
149
+ onPluginEvent: (event: { name: string; payload?: unknown }) => void;
150
+ onTeamEvent: (event: TeamEvent) => void;
151
+ createSpawnTool: () => Tool;
152
+ readSessionMetadata: () => Promise<Record<string, unknown> | undefined>;
153
+ writeSessionMetadata: (
154
+ metadata: Record<string, unknown>,
155
+ ) => Promise<void> | void;
156
+ }
157
+
158
+ export interface LocalRuntimeBootstrap {
159
+ effectiveInput: StartSessionInput;
160
+ config: CoreSessionConfig;
161
+ providerConfig: ProviderConfig;
162
+ workspaceMetadata: string;
163
+ /** Structured git + path metadata generated alongside workspaceMetadata. */
164
+ workspaceInfo: WorkspaceInfo;
165
+ extensions: AgentConfig["extensions"];
166
+ hooks: AgentHooks | undefined;
167
+ toolPolicies: AgentConfig["toolPolicies"];
168
+ requestToolApproval?: (
169
+ request: ToolApprovalRequest,
170
+ ) => Promise<ToolApprovalResult>;
171
+ pluginSandboxShutdown?: () => Promise<void>;
172
+ runtimeBuilderInput: RuntimeBuilderInput;
173
+ }
174
+
175
+ export async function prepareLocalRuntimeBootstrap(
176
+ options: PrepareLocalRuntimeBootstrapOptions,
177
+ ): Promise<LocalRuntimeBootstrap> {
178
+ const {
179
+ input,
180
+ sessionId,
181
+ providerSettingsManager,
182
+ defaultTelemetry,
183
+ defaultToolExecutors,
184
+ defaultToolPolicies,
185
+ defaultRequestToolApproval,
186
+ defaultFetch,
187
+ onPluginEvent,
188
+ onTeamEvent,
189
+ createSpawnTool,
190
+ localRuntime,
191
+ readSessionMetadata,
192
+ writeSessionMetadata,
193
+ } = options;
194
+ const workspacePath = resolveWorkspacePath(input.config);
195
+ const configOverrides = localRuntime?.configOverrides as
196
+ | Partial<LocalRuntimeConfigOverrides>
197
+ | undefined;
198
+ const localConfig = configOverrides as Partial<CoreSessionConfig> | undefined;
199
+
200
+ // Generate workspace + git metadata once, early, so it can be forwarded to
201
+ // hooks and extensions. The serialized string goes into CoreSessionConfig
202
+ // as workspaceMetadata; the structured object is kept as workspaceInfo.
203
+ const { workspaceInfo, workspaceMetadata } =
204
+ await buildWorkspaceMetadataWithInfo(input.config.cwd);
205
+
206
+ const fileHooks = createHookConfigFileHooks({
207
+ cwd: input.config.cwd,
208
+ workspacePath,
209
+ rootSessionId: sessionId,
210
+ logger: configOverrides?.logger,
211
+ workspaceInfo,
212
+ });
213
+ const auditHooks = hasRuntimeHooks(configOverrides?.hooks)
214
+ ? undefined
215
+ : createHookAuditHooks({
216
+ rootSessionId: sessionId,
217
+ workspacePath,
218
+ workspaceInfo,
219
+ });
220
+ const baseHooks = mergeAgentHooks([
221
+ configOverrides?.hooks,
222
+ fileHooks,
223
+ auditHooks,
224
+ ]);
225
+
226
+ let loadedPlugins:
227
+ | Awaited<ReturnType<typeof resolveAndLoadAgentPlugins>>
228
+ | undefined;
229
+ try {
230
+ loadedPlugins = await resolveAndLoadAgentPlugins({
231
+ pluginPaths: localConfig?.pluginPaths,
232
+ workspacePath,
233
+ cwd: input.config.cwd,
234
+ onEvent: onPluginEvent,
235
+ providerId: input.config.providerId,
236
+ modelId: input.config.modelId,
237
+ workspaceInfo,
238
+ });
239
+ logPluginDiagnostics(
240
+ loadedPlugins.failures,
241
+ loadedPlugins.warnings,
242
+ configOverrides?.logger,
243
+ );
244
+ } catch (error) {
245
+ const message = error instanceof Error ? error.message : String(error);
246
+ configOverrides?.logger?.log?.(
247
+ `plugin loading failed; continuing without plugins (${message})`,
248
+ );
249
+ }
250
+
251
+ const extensions = mergeAgentExtensions(
252
+ configOverrides?.extensions,
253
+ filterExtensionToolRegistrations(loadedPlugins?.extensions),
254
+ );
255
+ const baseConfig: CoreSessionConfig = {
256
+ ...input.config,
257
+ ...(configOverrides ?? {}),
258
+ hooks: baseHooks,
259
+ extensions,
260
+ telemetry: configOverrides?.telemetry ?? defaultTelemetry,
261
+ };
262
+ const providerConfig = buildProviderConfig(
263
+ baseConfig,
264
+ providerSettingsManager,
265
+ localRuntime?.modelCatalogDefaults,
266
+ defaultFetch,
267
+ );
268
+ const hooks = mergeAgentHooks([
269
+ baseConfig.hooks,
270
+ baseConfig.checkpoint?.enabled === true
271
+ ? createCheckpointHooks({
272
+ cwd: baseConfig.cwd,
273
+ sessionId,
274
+ logger: baseConfig.logger,
275
+ createCheckpoint: baseConfig.checkpoint?.createCheckpoint,
276
+ readSessionMetadata,
277
+ writeSessionMetadata,
278
+ })
279
+ : undefined,
280
+ ]);
281
+ const config: CoreSessionConfig = {
282
+ ...baseConfig,
283
+ providerConfig,
284
+ workspaceMetadata,
285
+ hooks,
286
+ };
287
+ const toolPolicies =
288
+ input.toolPolicies ?? baseConfig.toolPolicies ?? defaultToolPolicies;
289
+ const requestToolApproval =
290
+ input.requestToolApproval ?? defaultRequestToolApproval;
291
+ const effectiveToolExecutors =
292
+ localRuntime?.defaultToolExecutors ?? defaultToolExecutors;
293
+
294
+ return {
295
+ effectiveInput: input,
296
+ config,
297
+ providerConfig,
298
+ workspaceMetadata,
299
+ workspaceInfo,
300
+ extensions,
301
+ hooks,
302
+ toolPolicies,
303
+ requestToolApproval,
304
+ pluginSandboxShutdown: loadedPlugins?.shutdown,
305
+ runtimeBuilderInput: {
306
+ config,
307
+ hooks,
308
+ extensions,
309
+ onTeamEvent,
310
+ createSpawnTool,
311
+ onTeamRestored: localRuntime?.onTeamRestored,
312
+ userInstructionWatcher: localRuntime?.userInstructionWatcher,
313
+ defaultToolExecutors: effectiveToolExecutors,
314
+ logger: config.logger,
315
+ telemetry: config.telemetry,
316
+ },
317
+ };
318
+ }
@@ -0,0 +1,85 @@
1
+ import type { AgentConfig, Tool } from "@clinebot/shared";
2
+ import { resolveAgentPluginPaths } from "../extensions/plugin/plugin-config-loader";
3
+ import { loadAgentPluginsFromPathsWithDiagnostics } from "../extensions/plugin/plugin-loader";
4
+ import { resolveDisabledToolNames } from "./global-settings";
5
+
6
+ type AgentExtension = NonNullable<AgentConfig["extensions"]>[number];
7
+ type AgentExtensionApi = Parameters<NonNullable<AgentExtension["setup"]>>[0];
8
+
9
+ export interface PluginToolSummary {
10
+ name: string;
11
+ pluginName: string;
12
+ path: string;
13
+ source: "workspace-plugin" | "global-plugin";
14
+ enabled: boolean;
15
+ description?: string;
16
+ }
17
+
18
+ function collectRegisteredTools(
19
+ extension: AgentExtension,
20
+ workspaceInfo?: { rootPath: string },
21
+ ): Tool[] {
22
+ if (!extension.setup) {
23
+ return [];
24
+ }
25
+
26
+ const tools: Tool[] = [];
27
+ const api: AgentExtensionApi = {
28
+ registerTool: (tool) => tools.push(tool),
29
+ registerCommand: () => {},
30
+ registerMessageBuilder: () => {},
31
+ registerProvider: () => {},
32
+ };
33
+ extension.setup(api, { workspaceInfo });
34
+ return tools;
35
+ }
36
+
37
+ export async function listPluginTools(input: {
38
+ workspacePath: string;
39
+ cwd?: string;
40
+ disabledToolNames?: ReadonlyArray<string>;
41
+ providerId?: string;
42
+ modelId?: string;
43
+ }): Promise<PluginToolSummary[]> {
44
+ const pluginPaths = resolveAgentPluginPaths({
45
+ workspacePath: input.workspacePath,
46
+ cwd: input.cwd,
47
+ });
48
+ const disabled = resolveDisabledToolNames(input.disabledToolNames);
49
+ const summaries: PluginToolSummary[] = [];
50
+
51
+ for (const pluginPath of pluginPaths) {
52
+ const report = await loadAgentPluginsFromPathsWithDiagnostics(
53
+ [pluginPath],
54
+ {
55
+ cwd: input.cwd,
56
+ providerId: input.providerId,
57
+ modelId: input.modelId,
58
+ },
59
+ );
60
+ for (const extension of report.plugins) {
61
+ for (const tool of collectRegisteredTools(extension, {
62
+ rootPath: input.workspacePath,
63
+ })) {
64
+ summaries.push({
65
+ name: tool.name,
66
+ pluginName: extension.name,
67
+ path: pluginPath,
68
+ source: pluginPath.startsWith(input.workspacePath)
69
+ ? "workspace-plugin"
70
+ : "global-plugin",
71
+ enabled: !disabled.has(tool.name),
72
+ description: tool.description?.trim() || undefined,
73
+ });
74
+ }
75
+ }
76
+ }
77
+
78
+ return summaries.sort((left, right) => {
79
+ const nameOrder = left.name.localeCompare(right.name);
80
+ if (nameOrder !== 0) {
81
+ return nameOrder;
82
+ }
83
+ return left.path.localeCompare(right.path);
84
+ });
85
+ }
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { dirname, join } from "node:path";
4
4
  import * as LlmsModels from "@clinebot/llms";
5
- import type { RpcProviderCapability, RpcProviderModel } from "@clinebot/shared";
5
+ import type { ProviderCapability, ProviderModel } from "@clinebot/shared";
6
6
  import type { ProviderSettingsManager } from "../storage/provider-settings-manager";
7
7
 
8
8
  export type StoredModelsFile = {
@@ -14,7 +14,7 @@ export type StoredModelsFile = {
14
14
  name: string;
15
15
  baseUrl: string;
16
16
  defaultModelId?: string;
17
- capabilities?: RpcProviderCapability[];
17
+ capabilities?: ProviderCapability[];
18
18
  modelsSourceUrl?: string;
19
19
  };
20
20
  models: Record<
@@ -108,14 +108,14 @@ export async function writeModelsFile(
108
108
  await writeFile(filePath, `${JSON.stringify(state, null, 2)}\n`, "utf8");
109
109
  }
110
110
 
111
- export function toRpcProviderModel(
111
+ export function toProviderModel(
112
112
  modelId: string,
113
113
  info: {
114
114
  name?: string;
115
115
  capabilities?: string[];
116
116
  thinkingConfig?: unknown;
117
117
  },
118
- ): RpcProviderModel {
118
+ ): ProviderModel {
119
119
  return {
120
120
  id: modelId,
121
121
  name: info.name ?? modelId,
@@ -127,7 +127,7 @@ export function toRpcProviderModel(
127
127
  }
128
128
 
129
129
  function toProviderCapabilities(
130
- capabilities: RpcProviderCapability[] | undefined,
130
+ capabilities: ProviderCapability[] | undefined,
131
131
  ): Array<"reasoning" | "prompt-cache" | "tools"> | undefined {
132
132
  if (!capabilities || capabilities.length === 0) {
133
133
  return undefined;
@@ -146,7 +146,7 @@ function toProviderCapabilities(
146
146
  }
147
147
 
148
148
  function toModelCapabilities(
149
- capabilities: RpcProviderCapability[] | undefined,
149
+ capabilities: ProviderCapability[] | undefined,
150
150
  ): Array<
151
151
  "streaming" | "tools" | "reasoning" | "prompt-cache" | "images" | "files"
152
152
  > {
@@ -1,23 +1,28 @@
1
1
  import * as LlmsModels from "@clinebot/llms";
2
- import * as LlmsProviders from "@clinebot/llms";
3
2
  import type {
4
- RpcAddProviderActionRequest,
5
- RpcOAuthProviderId,
6
- RpcProviderCapability,
7
- RpcProviderListItem,
8
- RpcProviderModel,
9
- RpcSaveProviderSettingsActionRequest,
3
+ AddProviderActionRequest,
4
+ OAuthProviderId,
5
+ ProviderCapability,
6
+ ProviderListItem,
7
+ ProviderModel,
8
+ SaveProviderSettingsActionRequest,
10
9
  } from "@clinebot/shared";
11
- import { createOAuthClientCallbacks } from "../auth/client";
12
- import { loginClineOAuth } from "../auth/cline";
13
- import { loginOpenAICodex } from "../auth/codex";
14
- import { loginOcaOAuth } from "../auth/oca";
10
+ import { createOAuthClientCallbacks } from "../../auth/client";
11
+ import { loginClineOAuth } from "../../auth/cline";
12
+ import { loginOpenAICodex } from "../../auth/codex";
13
+ import { loginOcaOAuth } from "../../auth/oca";
14
+ import { resolveProviderConfig } from "../../llms/provider-defaults";
15
+ import type {
16
+ ModelInfo,
17
+ ProviderConfig,
18
+ ProviderSettings,
19
+ } from "../../llms/provider-settings";
15
20
  import type { ProviderSettingsManager } from "../storage/provider-settings-manager";
16
21
  import {
17
22
  readModelsFile,
18
23
  registerCustomProvider,
19
24
  resolveModelsRegistryPath,
20
- toRpcProviderModel,
25
+ toProviderModel,
21
26
  writeModelsFile,
22
27
  } from "./local-provider-registry";
23
28
 
@@ -33,7 +38,7 @@ export interface UpdateLocalProviderRequest {
33
38
  models?: string[];
34
39
  defaultModelId?: string | null;
35
40
  modelsSourceUrl?: string | null;
36
- capabilities?: RpcProviderCapability[] | null;
41
+ capabilities?: ProviderCapability[] | null;
37
42
  }
38
43
 
39
44
  export interface DeleteLocalProviderRequest {
@@ -86,12 +91,12 @@ function stableColor(id: string): string {
86
91
  return palette[hash % palette.length];
87
92
  }
88
93
 
89
- function toSortedRpcProviderModels(
90
- modelMap: Record<string, LlmsProviders.ModelInfo>,
91
- ): RpcProviderModel[] {
94
+ function toSortedProviderModels(
95
+ modelMap: Record<string, ModelInfo>,
96
+ ): ProviderModel[] {
92
97
  return Object.entries(modelMap)
93
98
  .sort(([a], [b]) => a.localeCompare(b))
94
- .map(([modelId, info]) => toRpcProviderModel(modelId, info));
99
+ .map(([modelId, info]) => toProviderModel(modelId, info));
95
100
  }
96
101
 
97
102
  // --- Model ID parsing ---
@@ -163,14 +168,14 @@ async function fetchModelIdsFromSource(
163
168
 
164
169
  async function resolveProviderModelMap(
165
170
  providerId: string,
166
- config?: LlmsProviders.ProviderConfig,
167
- ): Promise<Record<string, LlmsProviders.ModelInfo>> {
171
+ config?: ProviderConfig,
172
+ ): Promise<Record<string, ModelInfo>> {
168
173
  const registeredModels = await LlmsModels.getModelsForProvider(providerId);
169
174
  if (!config) {
170
175
  return registeredModels;
171
176
  }
172
177
 
173
- const resolved = await LlmsProviders.resolveProviderConfig(
178
+ const resolved = await resolveProviderConfig(
174
179
  providerId,
175
180
  {
176
181
  loadPrivateOnAuth: true,
@@ -202,7 +207,7 @@ function normalizeHeaders(
202
207
 
203
208
  function buildProviderModels(
204
209
  modelIds: string[],
205
- capabilities: RpcProviderCapability[] | undefined,
210
+ capabilities: ProviderCapability[] | undefined,
206
211
  ) {
207
212
  const supportsVision = capabilities?.includes("vision") ?? false;
208
213
  const supportsReasoning = capabilities?.includes("reasoning") ?? false;
@@ -257,7 +262,7 @@ function removeProviderFromSettingsState(
257
262
 
258
263
  export async function addLocalProvider(
259
264
  manager: ProviderSettingsManager,
260
- request: Omit<RpcAddProviderActionRequest, "action">,
265
+ request: Omit<AddProviderActionRequest, "action">,
261
266
  ): Promise<{
262
267
  providerId: string;
263
268
  settingsPath: string;
@@ -508,17 +513,17 @@ export async function deleteLocalProvider(
508
513
 
509
514
  export async function listLocalProviders(
510
515
  manager: ProviderSettingsManager,
511
- ): Promise<{ providers: RpcProviderListItem[]; settingsPath: string }> {
516
+ ): Promise<{ providers: ProviderListItem[]; settingsPath: string }> {
512
517
  const state = manager.read();
513
518
  const ids = LlmsModels.getProviderIds().sort((a, b) => a.localeCompare(b));
514
519
 
515
520
  const providers = await Promise.all(
516
- ids.map(async (id): Promise<RpcProviderListItem> => {
521
+ ids.map(async (id): Promise<ProviderListItem> => {
517
522
  const [info, registeredModels] = await Promise.all([
518
523
  LlmsModels.getProvider(id),
519
524
  LlmsModels.getModelsForProvider(id),
520
525
  ]);
521
- const modelList = toSortedRpcProviderModels(registeredModels);
526
+ const modelList = toSortedProviderModels(registeredModels);
522
527
  const persistedSettings = state.providers[id]?.settings;
523
528
  const name = info?.name ?? titleCaseFromId(id);
524
529
  return {
@@ -548,17 +553,17 @@ export async function listLocalProviders(
548
553
 
549
554
  export async function getLocalProviderModels(
550
555
  providerId: string,
551
- config?: LlmsProviders.ProviderConfig,
552
- ): Promise<{ providerId: string; models: RpcProviderModel[] }> {
556
+ config?: ProviderConfig,
557
+ ): Promise<{ providerId: string; models: ProviderModel[] }> {
553
558
  const id = providerId.trim();
554
559
  const modelMap = await resolveProviderModelMap(id, config);
555
- const models = toSortedRpcProviderModels(modelMap);
560
+ const models = toSortedProviderModels(modelMap);
556
561
  return { providerId: id, models };
557
562
  }
558
563
 
559
564
  export function saveLocalProviderSettings(
560
565
  manager: ProviderSettingsManager,
561
- request: Omit<RpcSaveProviderSettingsActionRequest, "action">,
566
+ request: Omit<SaveProviderSettingsActionRequest, "action">,
562
567
  ): { providerId: string; enabled: boolean; settingsPath: string } {
563
568
  const providerId = request.providerId.trim();
564
569
 
@@ -621,7 +626,7 @@ export function saveLocalProviderSettings(
621
626
  return { providerId, enabled: true, settingsPath: manager.getFilePath() };
622
627
  }
623
628
 
624
- export function normalizeOAuthProvider(provider: string): RpcOAuthProviderId {
629
+ export function normalizeOAuthProvider(provider: string): OAuthProviderId {
625
630
  const normalized = provider.trim().toLowerCase();
626
631
  if (normalized === "codex" || normalized === "openai-codex")
627
632
  return "openai-codex";
@@ -632,7 +637,7 @@ export function normalizeOAuthProvider(provider: string): RpcOAuthProviderId {
632
637
  }
633
638
 
634
639
  function toProviderApiKey(
635
- providerId: RpcOAuthProviderId,
640
+ providerId: OAuthProviderId,
636
641
  credentials: { access: string },
637
642
  ): string {
638
643
  return providerId === "cline"
@@ -641,8 +646,8 @@ function toProviderApiKey(
641
646
  }
642
647
 
643
648
  export async function loginLocalProvider(
644
- providerId: RpcOAuthProviderId,
645
- existing: LlmsProviders.ProviderSettings | undefined,
649
+ providerId: OAuthProviderId,
650
+ existing: ProviderSettings | undefined,
646
651
  openUrl: (url: string) => void,
647
652
  ): Promise<{
648
653
  access: string;
@@ -671,28 +676,28 @@ export async function loginLocalProvider(
671
676
 
672
677
  export function saveLocalProviderOAuthCredentials(
673
678
  manager: ProviderSettingsManager,
674
- providerId: RpcOAuthProviderId,
675
- existing: LlmsProviders.ProviderSettings | undefined,
679
+ providerId: OAuthProviderId,
680
+ existing: ProviderSettings | undefined,
676
681
  credentials: {
677
682
  access: string;
678
683
  refresh: string;
679
684
  expires: number;
680
685
  accountId?: string;
681
686
  },
682
- ): LlmsProviders.ProviderSettings {
687
+ ): ProviderSettings {
683
688
  const auth = {
684
689
  ...(existing?.auth ?? {}),
685
690
  accessToken: toProviderApiKey(providerId, credentials),
686
691
  refreshToken: credentials.refresh,
687
692
  accountId: credentials.accountId,
688
693
  expiresAt: credentials.expires,
689
- } as LlmsProviders.ProviderSettings["auth"] & { expiresAt?: number };
694
+ } as ProviderSettings["auth"] & { expiresAt?: number };
690
695
 
691
- const merged: LlmsProviders.ProviderSettings = {
696
+ const merged: ProviderSettings = {
692
697
  ...(existing ?? {
693
- provider: providerId as LlmsProviders.ProviderSettings["provider"],
698
+ provider: providerId as ProviderSettings["provider"],
694
699
  }),
695
- provider: providerId as LlmsProviders.ProviderSettings["provider"],
700
+ provider: providerId as ProviderSettings["provider"],
696
701
  auth,
697
702
  };
698
703
  manager.saveProviderSettings(merged, { tokenSource: "oauth" });
@@ -700,7 +705,7 @@ export function saveLocalProviderOAuthCredentials(
700
705
  }
701
706
 
702
707
  export function resolveLocalClineAuthToken(
703
- settings: LlmsProviders.ProviderSettings | undefined,
708
+ settings: ProviderSettings | undefined,
704
709
  ): string | undefined {
705
710
  const token = settings?.auth?.accessToken?.trim() || settings?.apiKey?.trim();
706
711
  return token && token.length > 0 ? token : undefined;