@clinebot/core 0.0.33 → 0.0.35

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 (412) hide show
  1. package/README.md +12 -8
  2. package/dist/ClineCore.d.ts +48 -29
  3. package/dist/ClineCore.d.ts.map +1 -1
  4. package/dist/auth/client.d.ts +19 -0
  5. package/dist/auth/client.d.ts.map +1 -1
  6. package/dist/auth/cline.d.ts.map +1 -1
  7. package/dist/auth/oca.d.ts.map +1 -1
  8. package/dist/auth/server.d.ts +32 -0
  9. package/dist/auth/server.d.ts.map +1 -1
  10. package/dist/auth/types.d.ts +29 -0
  11. package/dist/auth/types.d.ts.map +1 -1
  12. package/dist/extensions/config/agent-config-loader.d.ts +2 -2
  13. package/dist/extensions/config/agent-config-loader.d.ts.map +1 -1
  14. package/dist/extensions/config/agent-config-parser.d.ts +1 -1
  15. package/dist/extensions/config/agent-config-parser.d.ts.map +1 -1
  16. package/dist/extensions/config/hooks-config-loader.d.ts +2 -2
  17. package/dist/extensions/config/hooks-config-loader.d.ts.map +1 -1
  18. package/dist/extensions/config/index.d.ts +3 -3
  19. package/dist/extensions/config/index.d.ts.map +1 -1
  20. package/dist/extensions/config/user-instruction-config-loader.d.ts +2 -2
  21. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +1 -1
  22. package/dist/extensions/index.d.ts +2 -1
  23. package/dist/extensions/index.d.ts.map +1 -1
  24. package/dist/extensions/plugin/plugin-config-loader.d.ts +2 -1
  25. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +1 -1
  26. package/dist/extensions/plugin/plugin-load-report.d.ts +19 -0
  27. package/dist/extensions/plugin/plugin-load-report.d.ts.map +1 -0
  28. package/dist/extensions/plugin/plugin-loader.d.ts +6 -0
  29. package/dist/extensions/plugin/plugin-loader.d.ts.map +1 -1
  30. package/dist/extensions/plugin/plugin-sandbox.d.ts +2 -1
  31. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +1 -1
  32. package/dist/extensions/plugin-sandbox-bootstrap.js +242 -242
  33. package/dist/extensions/tools/constants.d.ts.map +1 -0
  34. package/dist/extensions/tools/definitions.d.ts.map +1 -0
  35. package/dist/extensions/tools/executors/apply-patch-parser.d.ts.map +1 -0
  36. package/dist/extensions/tools/executors/apply-patch.d.ts.map +1 -0
  37. package/dist/extensions/tools/executors/bash.d.ts.map +1 -0
  38. package/dist/extensions/tools/executors/editor.d.ts.map +1 -0
  39. package/dist/extensions/tools/executors/file-read.d.ts.map +1 -0
  40. package/dist/extensions/tools/executors/index.d.ts.map +1 -0
  41. package/dist/extensions/tools/executors/search.d.ts.map +1 -0
  42. package/dist/extensions/tools/executors/web-fetch.d.ts.map +1 -0
  43. package/dist/extensions/tools/helpers.d.ts.map +1 -0
  44. package/dist/extensions/tools/index.d.ts.map +1 -0
  45. package/dist/{tools → extensions/tools}/model-tool-routing.d.ts +1 -1
  46. package/dist/extensions/tools/model-tool-routing.d.ts.map +1 -0
  47. package/dist/{tools → extensions/tools}/presets.d.ts +1 -2
  48. package/dist/extensions/tools/presets.d.ts.map +1 -0
  49. package/dist/extensions/tools/schemas.d.ts.map +1 -0
  50. package/dist/extensions/tools/team/delegated-agent.d.ts.map +1 -0
  51. package/dist/extensions/tools/team/index.d.ts.map +1 -0
  52. package/dist/{team → extensions/tools/team}/multi-agent.d.ts +1 -3
  53. package/dist/extensions/tools/team/multi-agent.d.ts.map +1 -0
  54. package/dist/extensions/tools/team/projections.d.ts.map +1 -0
  55. package/dist/extensions/tools/team/runtime.d.ts.map +1 -0
  56. package/dist/{team → extensions/tools/team}/spawn-agent-tool.d.ts +0 -1
  57. package/dist/extensions/tools/team/spawn-agent-tool.d.ts.map +1 -0
  58. package/dist/extensions/tools/team/subagent-prompts.d.ts.map +1 -0
  59. package/dist/extensions/tools/team/team-tools.d.ts.map +1 -0
  60. package/dist/{tools → extensions/tools}/types.d.ts +4 -3
  61. package/dist/extensions/tools/types.d.ts.map +1 -0
  62. package/dist/{runtime → hooks}/checkpoint-hooks.d.ts +7 -0
  63. package/dist/hooks/checkpoint-hooks.d.ts.map +1 -0
  64. package/dist/{runtime → hooks}/hook-file-hooks.d.ts +0 -2
  65. package/dist/hooks/hook-file-hooks.d.ts.map +1 -0
  66. package/dist/hooks/subprocess.d.ts +3 -130
  67. package/dist/hooks/subprocess.d.ts.map +1 -1
  68. package/dist/index.d.ts +38 -35
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +386 -384
  71. package/dist/runtime/history.d.ts +4 -0
  72. package/dist/runtime/history.d.ts.map +1 -0
  73. package/dist/runtime/host.d.ts +9 -0
  74. package/dist/runtime/host.d.ts.map +1 -0
  75. package/dist/{session → runtime}/rpc-runtime-ensure.d.ts +13 -1
  76. package/dist/{session → runtime}/rpc-runtime-ensure.d.ts.map +1 -1
  77. package/dist/{session → runtime}/rpc-spawn-lease.d.ts.map +1 -1
  78. package/dist/runtime/runtime-builder.d.ts +1 -1
  79. package/dist/runtime/runtime-builder.d.ts.map +1 -1
  80. package/dist/{session/session-manager.d.ts → runtime/runtime-host.d.ts} +55 -12
  81. package/dist/runtime/runtime-host.d.ts.map +1 -0
  82. package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts +1 -1
  83. package/dist/{session → runtime}/runtime-oauth-token-manager.d.ts.map +1 -1
  84. package/dist/runtime/session-runtime.d.ts +2 -2
  85. package/dist/runtime/session-runtime.d.ts.map +1 -1
  86. package/dist/runtime/subprocess-sandbox.d.ts +2 -0
  87. package/dist/runtime/subprocess-sandbox.d.ts.map +1 -1
  88. package/dist/runtime/tool-approval.d.ts.map +1 -1
  89. package/dist/{session/session-agent-events.d.ts → services/agent-events.d.ts} +4 -4
  90. package/dist/services/agent-events.d.ts.map +1 -0
  91. package/dist/services/config.d.ts +3 -0
  92. package/dist/services/config.d.ts.map +1 -0
  93. package/dist/services/local-runtime-bootstrap.d.ts +41 -0
  94. package/dist/services/local-runtime-bootstrap.d.ts.map +1 -0
  95. package/dist/services/providers/local-provider-registry.d.ts.map +1 -0
  96. package/dist/services/providers/local-provider-service.d.ts.map +1 -0
  97. package/dist/{session → services}/session-artifacts.d.ts +2 -4
  98. package/dist/services/session-artifacts.d.ts.map +1 -0
  99. package/dist/{session/utils/helpers.d.ts → services/session-data.d.ts} +19 -27
  100. package/dist/services/session-data.d.ts.map +1 -0
  101. package/dist/{session → services}/session-telemetry.d.ts +2 -2
  102. package/dist/services/session-telemetry.d.ts.map +1 -0
  103. package/dist/{storage → services/storage}/file-team-store.d.ts +2 -2
  104. package/dist/services/storage/file-team-store.d.ts.map +1 -0
  105. package/dist/{storage → services/storage}/provider-settings-legacy-migration.d.ts +1 -1
  106. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +1 -0
  107. package/dist/{storage → services/storage}/provider-settings-manager.d.ts +1 -1
  108. package/dist/services/storage/provider-settings-manager.d.ts.map +1 -0
  109. package/dist/{storage → services/storage}/sqlite-session-store.d.ts +3 -3
  110. package/dist/services/storage/sqlite-session-store.d.ts.map +1 -0
  111. package/dist/{storage → services/storage}/sqlite-team-store.d.ts +2 -2
  112. package/dist/services/storage/sqlite-team-store.d.ts.map +1 -0
  113. package/dist/{storage → services/storage}/team-store.d.ts +1 -1
  114. package/dist/services/storage/team-store.d.ts.map +1 -0
  115. package/dist/services/telemetry/ITelemetryAdapter.d.ts.map +1 -0
  116. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts.map +1 -0
  117. package/dist/services/telemetry/OpenTelemetryProvider.d.ts.map +1 -0
  118. package/dist/services/telemetry/TelemetryLoggerSink.d.ts.map +1 -0
  119. package/dist/services/telemetry/TelemetryService.d.ts.map +1 -0
  120. package/dist/services/telemetry/core-events.d.ts.map +1 -0
  121. package/dist/services/telemetry/distinct-id.d.ts.map +1 -0
  122. package/dist/services/telemetry/index.d.ts.map +1 -0
  123. package/dist/{telemetry → services/telemetry}/index.js +6 -6
  124. package/dist/{session/utils → services}/usage.d.ts +1 -1
  125. package/dist/services/usage.d.ts.map +1 -0
  126. package/dist/services/workspace/file-indexer.d.ts.map +1 -0
  127. package/dist/services/workspace/index.d.ts.map +1 -0
  128. package/dist/services/workspace/mention-enricher.d.ts.map +1 -0
  129. package/dist/services/workspace-manifest.d.ts.map +1 -0
  130. package/dist/session/file-session-service.d.ts +4 -1
  131. package/dist/session/file-session-service.d.ts.map +1 -1
  132. package/dist/session/persistence-service.d.ts +8 -6
  133. package/dist/session/persistence-service.d.ts.map +1 -1
  134. package/dist/session/rpc-session-service.d.ts +3 -0
  135. package/dist/session/rpc-session-service.d.ts.map +1 -1
  136. package/dist/session/session-service.d.ts +8 -9
  137. package/dist/session/session-service.d.ts.map +1 -1
  138. package/dist/session/session-team-coordination.d.ts +4 -4
  139. package/dist/session/session-team-coordination.d.ts.map +1 -1
  140. package/dist/session/sqlite-rpc-session-backend.d.ts.map +1 -1
  141. package/dist/{session/default-session-manager.d.ts → transports/local.d.ts} +24 -14
  142. package/dist/transports/local.d.ts.map +1 -0
  143. package/dist/transports/rpc.d.ts +51 -0
  144. package/dist/transports/rpc.d.ts.map +1 -0
  145. package/dist/transports/runtime-host-support.d.ts +21 -0
  146. package/dist/transports/runtime-host-support.d.ts.map +1 -0
  147. package/dist/types/chat-schema.d.ts.map +1 -0
  148. package/dist/types/config.d.ts +3 -2
  149. package/dist/types/config.d.ts.map +1 -1
  150. package/dist/{session/utils/types.d.ts → types/session.d.ts} +15 -6
  151. package/dist/types/session.d.ts.map +1 -0
  152. package/dist/types/sessions.d.ts +19 -0
  153. package/dist/types/sessions.d.ts.map +1 -1
  154. package/dist/types/storage.d.ts +1 -3
  155. package/dist/types/storage.d.ts.map +1 -1
  156. package/dist/types.d.ts +7 -6
  157. package/dist/types.d.ts.map +1 -1
  158. package/package.json +7 -12
  159. package/src/ClineCore.test.ts +95 -19
  160. package/src/ClineCore.ts +120 -50
  161. package/src/auth/client.test.ts +29 -0
  162. package/src/auth/client.ts +21 -0
  163. package/src/auth/cline.ts +3 -1
  164. package/src/auth/codex.ts +1 -1
  165. package/src/auth/oca.ts +3 -1
  166. package/src/auth/server.test.ts +287 -0
  167. package/src/auth/server.ts +50 -1
  168. package/src/auth/types.ts +29 -0
  169. package/src/extensions/config/agent-config-loader.test.ts +3 -3
  170. package/src/extensions/config/agent-config-loader.ts +1 -5
  171. package/src/extensions/config/agent-config-parser.ts +1 -1
  172. package/src/extensions/config/hooks-config-loader.ts +1 -2
  173. package/src/extensions/config/index.ts +0 -4
  174. package/src/extensions/config/user-instruction-config-loader.ts +0 -4
  175. package/src/extensions/index.ts +6 -0
  176. package/src/extensions/plugin/plugin-config-loader.test.ts +39 -0
  177. package/src/extensions/plugin/plugin-config-loader.ts +18 -10
  178. package/src/extensions/plugin/plugin-load-report.ts +20 -0
  179. package/src/extensions/plugin/plugin-loader.test.ts +45 -0
  180. package/src/extensions/plugin/plugin-loader.ts +57 -3
  181. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +158 -86
  182. package/src/extensions/plugin/plugin-sandbox.test.ts +70 -0
  183. package/src/extensions/plugin/plugin-sandbox.ts +17 -6
  184. package/src/{tools → extensions/tools}/definitions.ts +1 -1
  185. package/src/extensions/tools/executors/file-read.test.ts +125 -0
  186. package/src/{tools → extensions/tools}/executors/file-read.ts +29 -4
  187. package/src/{tools → extensions/tools}/executors/search.ts +1 -1
  188. package/src/{tools → extensions/tools}/model-tool-routing.ts +1 -1
  189. package/src/{tools → extensions/tools}/presets.ts +2 -3
  190. package/src/extensions/tools/team/multi-agent.lifecycle.test.ts +455 -0
  191. package/src/{team → extensions/tools/team}/multi-agent.ts +80 -17
  192. package/src/{team → extensions/tools/team}/spawn-agent-tool.test.ts +0 -6
  193. package/src/{team → extensions/tools/team}/spawn-agent-tool.ts +1 -7
  194. package/src/{team → extensions/tools/team}/subagent-prompts.ts +2 -2
  195. package/src/{team → extensions/tools/team}/team-tools.test.ts +146 -30
  196. package/src/{team → extensions/tools/team}/team-tools.ts +98 -69
  197. package/src/{tools → extensions/tools}/types.ts +5 -3
  198. package/src/{runtime → hooks}/checkpoint-hooks.ts +27 -0
  199. package/src/{runtime → hooks}/hook-file-hooks.test.ts +42 -7
  200. package/src/{runtime → hooks}/hook-file-hooks.ts +6 -11
  201. package/src/hooks/subprocess.ts +48 -257
  202. package/src/index.ts +178 -158
  203. package/src/runtime/history.test.ts +114 -0
  204. package/src/runtime/history.ts +237 -0
  205. package/src/runtime/host.test.ts +230 -0
  206. package/src/runtime/host.ts +362 -0
  207. package/src/runtime/rpc-runtime-ensure.test.ts +123 -0
  208. package/src/{session → runtime}/rpc-runtime-ensure.ts +165 -27
  209. package/src/{session → runtime}/rpc-spawn-lease.test.ts +33 -1
  210. package/src/{session → runtime}/rpc-spawn-lease.ts +54 -20
  211. package/src/runtime/runtime-builder.team-persistence.test.ts +6 -3
  212. package/src/runtime/runtime-builder.test.ts +101 -4
  213. package/src/runtime/runtime-builder.ts +125 -86
  214. package/src/runtime/runtime-host.ts +178 -0
  215. package/src/{session → runtime}/runtime-oauth-token-manager.ts +1 -1
  216. package/src/runtime/runtime-parity.test.ts +1 -1
  217. package/src/runtime/session-runtime.ts +2 -2
  218. package/src/runtime/subprocess-sandbox.ts +26 -23
  219. package/src/runtime/tool-approval.ts +13 -15
  220. package/src/{session/session-agent-events.ts → services/agent-events.ts} +7 -7
  221. package/src/services/config.ts +5 -0
  222. package/src/services/local-runtime-bootstrap.ts +280 -0
  223. package/src/{providers → services/providers}/local-provider-service.ts +4 -4
  224. package/src/{session → services}/session-artifacts.ts +23 -19
  225. package/src/{session/utils/helpers.test.ts → services/session-data.test.ts} +1 -1
  226. package/src/{session/utils/helpers.ts → services/session-data.ts} +76 -72
  227. package/src/{session → services}/session-telemetry.ts +7 -9
  228. package/src/services/storage/artifact-store.ts +1 -0
  229. package/src/{storage → services/storage}/file-team-store.ts +2 -2
  230. package/src/{storage → services/storage}/provider-settings-legacy-migration.test.ts +1 -1
  231. package/src/{storage → services/storage}/provider-settings-legacy-migration.ts +2 -2
  232. package/src/{storage → services/storage}/provider-settings-manager.ts +2 -2
  233. package/src/services/storage/session-store.ts +1 -0
  234. package/src/{storage → services/storage}/sqlite-session-store.ts +7 -12
  235. package/src/{storage → services/storage}/sqlite-team-store.ts +4 -4
  236. package/src/{storage → services/storage}/team-store.ts +1 -1
  237. package/src/{session/utils → services}/usage.ts +1 -1
  238. package/src/{input → services/workspace}/file-indexer.test.ts +30 -1
  239. package/src/{input → services/workspace}/file-indexer.ts +26 -2
  240. package/src/{input → services/workspace}/mention-enricher.test.ts +21 -0
  241. package/src/{input → services/workspace}/mention-enricher.ts +1 -1
  242. package/src/session/file-session-service.ts +9 -7
  243. package/src/session/index.ts +25 -17
  244. package/src/session/persistence-service.test.ts +121 -24
  245. package/src/session/persistence-service.ts +118 -102
  246. package/src/session/rpc-session-service.ts +9 -2
  247. package/src/session/session-service.team-persistence.test.ts +1 -1
  248. package/src/session/session-service.ts +32 -19
  249. package/src/session/session-team-coordination.ts +13 -6
  250. package/src/session/sqlite-rpc-session-backend.ts +4 -6
  251. package/src/session/workspace-manager.ts +1 -1
  252. package/src/{session/default-session-manager.e2e.test.ts → transports/local.e2e.test.ts} +13 -17
  253. package/src/{session/default-session-manager.test.ts → transports/local.test.ts} +316 -230
  254. package/src/{session/default-session-manager.ts → transports/local.ts} +138 -172
  255. package/src/transports/rpc.test.ts +82 -0
  256. package/src/transports/rpc.ts +665 -0
  257. package/src/transports/runtime-host-support.ts +86 -0
  258. package/src/types/config.ts +3 -2
  259. package/src/{session/utils/types.ts → types/session.ts} +18 -5
  260. package/src/types/sessions.ts +21 -0
  261. package/src/types/storage.ts +1 -6
  262. package/src/types.ts +25 -18
  263. package/dist/chat/chat-schema.d.ts.map +0 -1
  264. package/dist/input/file-indexer.d.ts.map +0 -1
  265. package/dist/input/index.d.ts.map +0 -1
  266. package/dist/input/mention-enricher.d.ts.map +0 -1
  267. package/dist/prompt/default-system.d.ts +0 -2
  268. package/dist/prompt/default-system.d.ts.map +0 -1
  269. package/dist/providers/local-provider-registry.d.ts.map +0 -1
  270. package/dist/providers/local-provider-service.d.ts.map +0 -1
  271. package/dist/runtime/checkpoint-hooks.d.ts.map +0 -1
  272. package/dist/runtime/hook-file-hooks.d.ts.map +0 -1
  273. package/dist/runtime/team-runtime-registry.d.ts +0 -13
  274. package/dist/runtime/team-runtime-registry.d.ts.map +0 -1
  275. package/dist/session/default-session-manager.d.ts.map +0 -1
  276. package/dist/session/session-agent-events.d.ts.map +0 -1
  277. package/dist/session/session-artifacts.d.ts.map +0 -1
  278. package/dist/session/session-config-builder.d.ts +0 -16
  279. package/dist/session/session-config-builder.d.ts.map +0 -1
  280. package/dist/session/session-host.d.ts +0 -15
  281. package/dist/session/session-host.d.ts.map +0 -1
  282. package/dist/session/session-manager.d.ts.map +0 -1
  283. package/dist/session/session-telemetry.d.ts.map +0 -1
  284. package/dist/session/utils/helpers.d.ts.map +0 -1
  285. package/dist/session/utils/types.d.ts.map +0 -1
  286. package/dist/session/utils/usage.d.ts.map +0 -1
  287. package/dist/session/workspace-manifest.d.ts.map +0 -1
  288. package/dist/storage/file-team-store.d.ts.map +0 -1
  289. package/dist/storage/provider-settings-legacy-migration.d.ts.map +0 -1
  290. package/dist/storage/provider-settings-manager.d.ts.map +0 -1
  291. package/dist/storage/sqlite-session-store.d.ts.map +0 -1
  292. package/dist/storage/sqlite-team-store.d.ts.map +0 -1
  293. package/dist/storage/team-store.d.ts.map +0 -1
  294. package/dist/team/delegated-agent.d.ts.map +0 -1
  295. package/dist/team/index.d.ts.map +0 -1
  296. package/dist/team/multi-agent.d.ts.map +0 -1
  297. package/dist/team/projections.d.ts.map +0 -1
  298. package/dist/team/runtime.d.ts.map +0 -1
  299. package/dist/team/spawn-agent-tool.d.ts.map +0 -1
  300. package/dist/team/subagent-prompts.d.ts.map +0 -1
  301. package/dist/team/team-tools.d.ts.map +0 -1
  302. package/dist/telemetry/ITelemetryAdapter.d.ts.map +0 -1
  303. package/dist/telemetry/OpenTelemetryAdapter.d.ts.map +0 -1
  304. package/dist/telemetry/OpenTelemetryProvider.d.ts.map +0 -1
  305. package/dist/telemetry/TelemetryLoggerSink.d.ts.map +0 -1
  306. package/dist/telemetry/TelemetryService.d.ts.map +0 -1
  307. package/dist/telemetry/core-events.d.ts.map +0 -1
  308. package/dist/telemetry/distinct-id.d.ts.map +0 -1
  309. package/dist/telemetry/index.d.ts.map +0 -1
  310. package/dist/tools/constants.d.ts.map +0 -1
  311. package/dist/tools/definitions.d.ts.map +0 -1
  312. package/dist/tools/executors/apply-patch-parser.d.ts.map +0 -1
  313. package/dist/tools/executors/apply-patch.d.ts.map +0 -1
  314. package/dist/tools/executors/bash.d.ts.map +0 -1
  315. package/dist/tools/executors/editor.d.ts.map +0 -1
  316. package/dist/tools/executors/file-read.d.ts.map +0 -1
  317. package/dist/tools/executors/index.d.ts.map +0 -1
  318. package/dist/tools/executors/search.d.ts.map +0 -1
  319. package/dist/tools/executors/web-fetch.d.ts.map +0 -1
  320. package/dist/tools/helpers.d.ts.map +0 -1
  321. package/dist/tools/index.d.ts.map +0 -1
  322. package/dist/tools/model-tool-routing.d.ts.map +0 -1
  323. package/dist/tools/presets.d.ts.map +0 -1
  324. package/dist/tools/schemas.d.ts.map +0 -1
  325. package/dist/tools/types.d.ts.map +0 -1
  326. package/src/prompt/default-system.ts +0 -21
  327. package/src/runtime/team-runtime-registry.ts +0 -43
  328. package/src/session/session-config-builder.ts +0 -126
  329. package/src/session/session-host.test.ts +0 -89
  330. package/src/session/session-host.ts +0 -213
  331. package/src/session/session-manager.ts +0 -74
  332. package/src/storage/artifact-store.ts +0 -1
  333. package/src/storage/session-store.ts +0 -1
  334. package/src/team/multi-agent.lifecycle.test.ts +0 -201
  335. package/src/tools/executors/file-read.test.ts +0 -49
  336. /package/dist/{tools → extensions/tools}/constants.d.ts +0 -0
  337. /package/dist/{tools → extensions/tools}/definitions.d.ts +0 -0
  338. /package/dist/{tools → extensions/tools}/executors/apply-patch-parser.d.ts +0 -0
  339. /package/dist/{tools → extensions/tools}/executors/apply-patch.d.ts +0 -0
  340. /package/dist/{tools → extensions/tools}/executors/bash.d.ts +0 -0
  341. /package/dist/{tools → extensions/tools}/executors/editor.d.ts +0 -0
  342. /package/dist/{tools → extensions/tools}/executors/file-read.d.ts +0 -0
  343. /package/dist/{tools → extensions/tools}/executors/index.d.ts +0 -0
  344. /package/dist/{tools → extensions/tools}/executors/search.d.ts +0 -0
  345. /package/dist/{tools → extensions/tools}/executors/web-fetch.d.ts +0 -0
  346. /package/dist/{tools → extensions/tools}/helpers.d.ts +0 -0
  347. /package/dist/{tools → extensions/tools}/index.d.ts +0 -0
  348. /package/dist/{tools → extensions/tools}/schemas.d.ts +0 -0
  349. /package/dist/{team → extensions/tools/team}/delegated-agent.d.ts +0 -0
  350. /package/dist/{team → extensions/tools/team}/index.d.ts +0 -0
  351. /package/dist/{team → extensions/tools/team}/projections.d.ts +0 -0
  352. /package/dist/{team → extensions/tools/team}/runtime.d.ts +0 -0
  353. /package/dist/{team → extensions/tools/team}/subagent-prompts.d.ts +0 -0
  354. /package/dist/{team → extensions/tools/team}/team-tools.d.ts +0 -0
  355. /package/dist/{session → runtime}/rpc-spawn-lease.d.ts +0 -0
  356. /package/dist/{providers → services/providers}/local-provider-registry.d.ts +0 -0
  357. /package/dist/{providers → services/providers}/local-provider-service.d.ts +0 -0
  358. /package/dist/{telemetry → services/telemetry}/ITelemetryAdapter.d.ts +0 -0
  359. /package/dist/{telemetry → services/telemetry}/OpenTelemetryAdapter.d.ts +0 -0
  360. /package/dist/{telemetry → services/telemetry}/OpenTelemetryProvider.d.ts +0 -0
  361. /package/dist/{telemetry → services/telemetry}/TelemetryLoggerSink.d.ts +0 -0
  362. /package/dist/{telemetry → services/telemetry}/TelemetryService.d.ts +0 -0
  363. /package/dist/{telemetry → services/telemetry}/core-events.d.ts +0 -0
  364. /package/dist/{telemetry → services/telemetry}/distinct-id.d.ts +0 -0
  365. /package/dist/{telemetry → services/telemetry}/index.d.ts +0 -0
  366. /package/dist/{input → services/workspace}/file-indexer.d.ts +0 -0
  367. /package/dist/{input → services/workspace}/index.d.ts +0 -0
  368. /package/dist/{input → services/workspace}/mention-enricher.d.ts +0 -0
  369. /package/dist/{session → services}/workspace-manifest.d.ts +0 -0
  370. /package/dist/{chat → types}/chat-schema.d.ts +0 -0
  371. /package/src/{tools → extensions/tools}/constants.ts +0 -0
  372. /package/src/{tools → extensions/tools}/definitions.test.ts +0 -0
  373. /package/src/{tools → extensions/tools}/executors/apply-patch-parser.ts +0 -0
  374. /package/src/{tools → extensions/tools}/executors/apply-patch.ts +0 -0
  375. /package/src/{tools → extensions/tools}/executors/bash.test.ts +0 -0
  376. /package/src/{tools → extensions/tools}/executors/bash.ts +0 -0
  377. /package/src/{tools → extensions/tools}/executors/editor.test.ts +0 -0
  378. /package/src/{tools → extensions/tools}/executors/editor.ts +0 -0
  379. /package/src/{tools → extensions/tools}/executors/index.ts +0 -0
  380. /package/src/{tools → extensions/tools}/executors/web-fetch.ts +0 -0
  381. /package/src/{tools → extensions/tools}/helpers.ts +0 -0
  382. /package/src/{tools → extensions/tools}/index.ts +0 -0
  383. /package/src/{tools → extensions/tools}/model-tool-routing.test.ts +0 -0
  384. /package/src/{tools → extensions/tools}/presets.test.ts +0 -0
  385. /package/src/{tools → extensions/tools}/schemas.ts +0 -0
  386. /package/src/{team → extensions/tools/team}/delegated-agent.ts +0 -0
  387. /package/src/{team → extensions/tools/team}/index.ts +0 -0
  388. /package/src/{team → extensions/tools/team}/projections.ts +0 -0
  389. /package/src/{team → extensions/tools/team}/runtime.ts +0 -0
  390. /package/src/{runtime → hooks}/checkpoint-hooks.test.ts +0 -0
  391. /package/src/{session → runtime}/runtime-oauth-token-manager.test.ts +0 -0
  392. /package/src/{providers → services/providers}/local-provider-registry.ts +0 -0
  393. /package/src/{providers → services/providers}/local-provider-service.test.ts +0 -0
  394. /package/src/{storage → services/storage}/index.ts +0 -0
  395. /package/src/{storage → services/storage}/provider-settings-manager.test.ts +0 -0
  396. /package/src/{telemetry → services/telemetry}/ITelemetryAdapter.ts +0 -0
  397. /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.test.ts +0 -0
  398. /package/src/{telemetry → services/telemetry}/OpenTelemetryAdapter.ts +0 -0
  399. /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.test.ts +0 -0
  400. /package/src/{telemetry → services/telemetry}/OpenTelemetryProvider.ts +0 -0
  401. /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.test.ts +0 -0
  402. /package/src/{telemetry → services/telemetry}/TelemetryLoggerSink.ts +0 -0
  403. /package/src/{telemetry → services/telemetry}/TelemetryService.test.ts +0 -0
  404. /package/src/{telemetry → services/telemetry}/TelemetryService.ts +0 -0
  405. /package/src/{telemetry → services/telemetry}/core-events.ts +0 -0
  406. /package/src/{telemetry → services/telemetry}/distinct-id.test.ts +0 -0
  407. /package/src/{telemetry → services/telemetry}/distinct-id.ts +0 -0
  408. /package/src/{telemetry → services/telemetry}/index.ts +0 -0
  409. /package/src/{input → services/workspace}/file-indexer.d.ts +0 -0
  410. /package/src/{input → services/workspace}/index.ts +0 -0
  411. /package/src/{session → services}/workspace-manifest.ts +0 -0
  412. /package/src/{chat → types}/chat-schema.ts +0 -0
@@ -61,6 +61,22 @@ export class SubprocessSandbox {
61
61
  this.options = options;
62
62
  }
63
63
 
64
+ private get processLabel(): string {
65
+ return this.options.name ?? "sandbox";
66
+ }
67
+
68
+ private clearPendingRequest(id: string): PendingRequest | undefined {
69
+ const pending = this.pending.get(id);
70
+ if (!pending) {
71
+ return undefined;
72
+ }
73
+ this.pending.delete(id);
74
+ if (pending.timeout) {
75
+ clearTimeout(pending.timeout);
76
+ }
77
+ return pending;
78
+ }
79
+
64
80
  start(): void {
65
81
  if (this.process && this.process.exitCode === null) {
66
82
  return;
@@ -96,7 +112,7 @@ export class SubprocessSandbox {
96
112
  child.on("error", (error) => {
97
113
  this.failPending(
98
114
  new Error(
99
- `${this.options.name ?? "sandbox"} process error: ${asError(error).message}`,
115
+ `${this.processLabel} process error: ${asError(error).message}`,
100
116
  ),
101
117
  );
102
118
  });
@@ -119,9 +135,7 @@ export class SubprocessSandbox {
119
135
  this.start();
120
136
  const child = this.process;
121
137
  if (!child || child.exitCode !== null) {
122
- throw new Error(
123
- `${this.options.name ?? "sandbox"} process is not available`,
124
- );
138
+ throw new Error(`${this.processLabel} process is not available`);
125
139
  }
126
140
 
127
141
  const id = `req_${++this.requestCounter}`;
@@ -139,13 +153,13 @@ export class SubprocessSandbox {
139
153
  };
140
154
  if ((options.timeoutMs ?? 0) > 0) {
141
155
  pending.timeout = setTimeout(() => {
142
- this.pending.delete(id);
156
+ this.clearPendingRequest(id);
143
157
  this.shutdown().catch(() => {
144
158
  // Best-effort process shutdown after timeout.
145
159
  });
146
160
  reject(
147
161
  new Error(
148
- `${this.options.name ?? "sandbox"} call timed out after ${options.timeoutMs}ms: ${method}`,
162
+ `${this.processLabel} call timed out after ${options.timeoutMs}ms: ${method}`,
149
163
  ),
150
164
  );
151
165
  }, options.timeoutMs);
@@ -155,17 +169,13 @@ export class SubprocessSandbox {
155
169
  if (!error) {
156
170
  return;
157
171
  }
158
- const entry = this.pending.get(id);
172
+ const entry = this.clearPendingRequest(id);
159
173
  if (!entry) {
160
174
  return;
161
175
  }
162
- this.pending.delete(id);
163
- if (entry.timeout) {
164
- clearTimeout(entry.timeout);
165
- }
166
176
  entry.reject(
167
177
  new Error(
168
- `${this.options.name ?? "sandbox"} failed to send call "${method}": ${asError(error).message}`,
178
+ `${this.processLabel} failed to send call "${method}": ${asError(error).message}`,
169
179
  ),
170
180
  );
171
181
  });
@@ -176,7 +186,7 @@ export class SubprocessSandbox {
176
186
  const child = this.process;
177
187
  this.process = null;
178
188
  if (!child || child.exitCode !== null) {
179
- this.failPending(new Error(`${this.options.name ?? "sandbox"} shutdown`));
189
+ this.failPending(new Error(`${this.processLabel} shutdown`));
180
190
  return;
181
191
  }
182
192
  await new Promise<void>((resolve) => {
@@ -199,7 +209,7 @@ export class SubprocessSandbox {
199
209
  resolve();
200
210
  }
201
211
  });
202
- this.failPending(new Error(`${this.options.name ?? "sandbox"} shutdown`));
212
+ this.failPending(new Error(`${this.processLabel} shutdown`));
203
213
  }
204
214
 
205
215
  private onMessage(
@@ -220,23 +230,16 @@ export class SubprocessSandbox {
220
230
  if (message.type !== "response" || !message.id) {
221
231
  return;
222
232
  }
223
- const pending = this.pending.get(message.id);
233
+ const pending = this.clearPendingRequest(message.id);
224
234
  if (!pending) {
225
235
  return;
226
236
  }
227
- this.pending.delete(message.id);
228
- if (pending.timeout) {
229
- clearTimeout(pending.timeout);
230
- }
231
237
  if (message.ok) {
232
238
  pending.resolve(message.result);
233
239
  return;
234
240
  }
235
241
  pending.reject(
236
- new Error(
237
- message.error?.message ||
238
- `${this.options.name ?? "sandbox"} call failed`,
239
- ),
242
+ new Error(message.error?.message || `${this.processLabel} call failed`),
240
243
  );
241
244
  }
242
245
 
@@ -18,6 +18,14 @@ function delay(ms: number): Promise<void> {
18
18
  return new Promise((resolve) => setTimeout(resolve, ms));
19
19
  }
20
20
 
21
+ async function unlinkIfPresent(path: string): Promise<void> {
22
+ try {
23
+ await unlink(path);
24
+ } catch {
25
+ // Best-effort cleanup.
26
+ }
27
+ }
28
+
21
29
  export async function requestDesktopToolApproval(
22
30
  request: ToolApprovalRequest,
23
31
  options: DesktopToolApprovalOptions = {},
@@ -77,16 +85,10 @@ export async function requestDesktopToolApproval(
77
85
  approved: parsed.approved === true,
78
86
  reason: typeof parsed.reason === "string" ? parsed.reason : undefined,
79
87
  };
80
- try {
81
- await unlink(decisionPath);
82
- } catch {
83
- // Best-effort cleanup.
84
- }
85
- try {
86
- await unlink(requestPath);
87
- } catch {
88
- // Best-effort cleanup.
89
- }
88
+ await Promise.all([
89
+ unlinkIfPresent(decisionPath),
90
+ unlinkIfPresent(requestPath),
91
+ ]);
90
92
  return result;
91
93
  } catch {
92
94
  // Decision not available yet.
@@ -94,11 +96,7 @@ export async function requestDesktopToolApproval(
94
96
  await delay(pollIntervalMs);
95
97
  }
96
98
 
97
- try {
98
- await unlink(requestPath);
99
- } catch {
100
- // Best-effort cleanup.
101
- }
99
+ await unlinkIfPresent(requestPath);
102
100
 
103
101
  return { approved: false, reason: "Tool approval request timed out" };
104
102
  }
@@ -1,4 +1,9 @@
1
1
  import type { AgentEvent } from "@clinebot/shared";
2
+ import type { SessionAccumulatedUsage } from "../runtime/runtime-host";
3
+ import type { CoreSessionConfig } from "../types/config";
4
+ import type { CoreSessionEvent } from "../types/events";
5
+ import type { ActiveSession } from "../types/session";
6
+ import { serializeAgentEvent } from "./session-data";
2
7
  import {
3
8
  captureConversationTurnEvent,
4
9
  captureDiffEditFailure,
@@ -7,13 +12,8 @@ import {
7
12
  captureTokenUsage,
8
13
  captureToolUsage,
9
14
  type TelemetryAgentIdentityProperties,
10
- } from "../telemetry/core-events";
11
- import type { CoreSessionConfig } from "../types/config";
12
- import type { CoreSessionEvent } from "../types/events";
13
- import type { SessionAccumulatedUsage } from "./session-manager";
14
- import { serializeAgentEvent } from "./utils/helpers";
15
- import type { ActiveSession } from "./utils/types";
16
- import { accumulateUsageTotals } from "./utils/usage";
15
+ } from "./telemetry/core-events";
16
+ import { accumulateUsageTotals } from "./usage";
17
17
 
18
18
  export function extractSkillNameFromToolInput(
19
19
  input: unknown,
@@ -0,0 +1,5 @@
1
+ import type { CoreSessionConfig } from "../types/config";
2
+
3
+ export function resolveWorkspacePath(config: CoreSessionConfig): string {
4
+ return config.workspaceRoot ?? config.cwd;
5
+ }
@@ -0,0 +1,280 @@
1
+ import type {
2
+ AgentConfig,
3
+ AgentHooks,
4
+ ITelemetryService,
5
+ Tool,
6
+ ToolApprovalRequest,
7
+ ToolApprovalResult,
8
+ } from "@clinebot/shared";
9
+ import { resolveAndLoadAgentPlugins } from "../extensions/plugin/plugin-config-loader";
10
+ import type {
11
+ PluginInitializationFailure,
12
+ PluginInitializationWarning,
13
+ } from "../extensions/plugin/plugin-load-report";
14
+ import type { ToolExecutors } from "../extensions/tools";
15
+ import type { TeamEvent } from "../extensions/tools/team";
16
+ import { createCheckpointHooks } from "../hooks/checkpoint-hooks";
17
+ import {
18
+ createHookAuditHooks,
19
+ createHookConfigFileHooks,
20
+ mergeAgentHooks,
21
+ } from "../hooks/hook-file-hooks";
22
+ import type {
23
+ LocalRuntimeConfigOverrides,
24
+ LocalRuntimeStartOptions,
25
+ StartSessionInput,
26
+ } from "../runtime/runtime-host";
27
+ import type {
28
+ RuntimeBuilderInput,
29
+ TeamToolsFactory,
30
+ } from "../runtime/session-runtime";
31
+ import type { CoreSessionConfig } from "../types/config";
32
+ import {
33
+ type ProviderConfig,
34
+ type ProviderSettings,
35
+ toProviderConfig,
36
+ } from "../types/provider-settings";
37
+ import { resolveWorkspacePath } from "./config";
38
+ import { hasRuntimeHooks, mergeAgentExtensions } from "./session-data";
39
+ import type { ProviderSettingsManager } from "./storage/provider-settings-manager";
40
+ import { buildWorkspaceMetadata } from "./workspace-manifest";
41
+
42
+ function formatPluginFailure(failure: PluginInitializationFailure): string {
43
+ const label = failure.pluginName ?? failure.pluginPath;
44
+ return `${label}: ${failure.message}`;
45
+ }
46
+
47
+ function logPluginDiagnostics(
48
+ failures: PluginInitializationFailure[],
49
+ warnings: PluginInitializationWarning[],
50
+ logger: CoreSessionConfig["logger"],
51
+ ): void {
52
+ if (warnings.length > 0) {
53
+ for (const warning of warnings) {
54
+ logger?.log(warning.message, { severity: "warn" });
55
+ }
56
+ }
57
+ if (failures.length === 0) {
58
+ return;
59
+ }
60
+ const preview = failures.slice(0, 3).map(formatPluginFailure).join("; ");
61
+ const suffix = failures.length > 3 ? `; and ${failures.length - 3} more` : "";
62
+ logger?.log(
63
+ `Some plugins failed to initialize. ${preview}${suffix}. Use --verbose for more details.`,
64
+ { severity: "warn" },
65
+ );
66
+ for (const failure of failures) {
67
+ logger?.log(
68
+ `Plugin initialization failed (${failure.phase}) for ${failure.pluginPath}`,
69
+ {
70
+ severity: "warn",
71
+ stack: failure.stack,
72
+ pluginPath: failure.pluginPath,
73
+ pluginName: failure.pluginName,
74
+ },
75
+ );
76
+ }
77
+ }
78
+
79
+ function resolveReasoningSettings(
80
+ config: CoreSessionConfig,
81
+ storedReasoning: ProviderSettings["reasoning"],
82
+ ): ProviderSettings["reasoning"] {
83
+ const hasThinking = typeof config.thinking === "boolean";
84
+ const hasEffort = typeof config.reasoningEffort === "string";
85
+ if (!hasThinking && !hasEffort) return storedReasoning;
86
+ return {
87
+ ...(storedReasoning ?? {}),
88
+ ...(hasThinking ? { enabled: config.thinking } : {}),
89
+ ...(hasEffort ? { effort: config.reasoningEffort } : {}),
90
+ };
91
+ }
92
+
93
+ function buildProviderConfig(
94
+ config: CoreSessionConfig,
95
+ providerSettingsManager: ProviderSettingsManager,
96
+ ): ProviderConfig {
97
+ const stored = providerSettingsManager.getProviderSettings(config.providerId);
98
+ const settings: ProviderSettings = {
99
+ ...(stored ?? {}),
100
+ provider: config.providerId,
101
+ model: config.modelId,
102
+ apiKey: config.apiKey ?? stored?.apiKey,
103
+ baseUrl: config.baseUrl ?? stored?.baseUrl,
104
+ headers: config.headers ?? stored?.headers,
105
+ reasoning: resolveReasoningSettings(config, stored?.reasoning),
106
+ };
107
+ const providerConfig = toProviderConfig(settings);
108
+ if (config.knownModels) {
109
+ providerConfig.knownModels = config.knownModels;
110
+ }
111
+ if (config.extensionContext) {
112
+ providerConfig.extensionContext = config.extensionContext;
113
+ }
114
+ return providerConfig;
115
+ }
116
+
117
+ export interface PrepareLocalRuntimeBootstrapOptions {
118
+ input: StartSessionInput;
119
+ localRuntime?: LocalRuntimeStartOptions;
120
+ sessionId: string;
121
+ providerSettingsManager: ProviderSettingsManager;
122
+ defaultTelemetry?: ITelemetryService;
123
+ defaultToolExecutors?: Partial<ToolExecutors>;
124
+ teamToolsFactory?: TeamToolsFactory;
125
+ defaultToolPolicies?: AgentConfig["toolPolicies"];
126
+ defaultRequestToolApproval?: (
127
+ request: ToolApprovalRequest,
128
+ ) => Promise<ToolApprovalResult>;
129
+ onPluginEvent: (event: { name: string; payload?: unknown }) => void;
130
+ onTeamEvent: (event: TeamEvent) => void;
131
+ createSpawnTool: () => Tool;
132
+ readSessionMetadata: () => Promise<Record<string, unknown> | undefined>;
133
+ writeSessionMetadata: (
134
+ metadata: Record<string, unknown>,
135
+ ) => Promise<void> | void;
136
+ }
137
+
138
+ export interface LocalRuntimeBootstrap {
139
+ effectiveInput: StartSessionInput;
140
+ config: CoreSessionConfig;
141
+ providerConfig: ProviderConfig;
142
+ workspaceMetadata: string;
143
+ extensions: AgentConfig["extensions"];
144
+ hooks: AgentHooks | undefined;
145
+ toolPolicies: AgentConfig["toolPolicies"];
146
+ requestToolApproval?: (
147
+ request: ToolApprovalRequest,
148
+ ) => Promise<ToolApprovalResult>;
149
+ pluginSandboxShutdown?: () => Promise<void>;
150
+ runtimeBuilderInput: RuntimeBuilderInput;
151
+ }
152
+
153
+ export async function prepareLocalRuntimeBootstrap(
154
+ options: PrepareLocalRuntimeBootstrapOptions,
155
+ ): Promise<LocalRuntimeBootstrap> {
156
+ const {
157
+ input,
158
+ sessionId,
159
+ providerSettingsManager,
160
+ defaultTelemetry,
161
+ defaultToolExecutors,
162
+ teamToolsFactory,
163
+ defaultToolPolicies,
164
+ defaultRequestToolApproval,
165
+ onPluginEvent,
166
+ onTeamEvent,
167
+ createSpawnTool,
168
+ localRuntime,
169
+ readSessionMetadata,
170
+ writeSessionMetadata,
171
+ } = options;
172
+ const workspacePath = resolveWorkspacePath(input.config);
173
+ const configOverrides = localRuntime?.configOverrides as
174
+ | Partial<LocalRuntimeConfigOverrides>
175
+ | undefined;
176
+
177
+ const fileHooks = createHookConfigFileHooks({
178
+ cwd: input.config.cwd,
179
+ workspacePath,
180
+ rootSessionId: sessionId,
181
+ logger: configOverrides?.logger,
182
+ });
183
+ const auditHooks = hasRuntimeHooks(configOverrides?.hooks)
184
+ ? undefined
185
+ : createHookAuditHooks({
186
+ rootSessionId: sessionId,
187
+ workspacePath,
188
+ });
189
+ const baseHooks = mergeAgentHooks([
190
+ configOverrides?.hooks,
191
+ fileHooks,
192
+ auditHooks,
193
+ ]);
194
+
195
+ let loadedPlugins:
196
+ | Awaited<ReturnType<typeof resolveAndLoadAgentPlugins>>
197
+ | undefined;
198
+ try {
199
+ loadedPlugins = await resolveAndLoadAgentPlugins({
200
+ pluginPaths: configOverrides?.pluginPaths,
201
+ workspacePath,
202
+ cwd: input.config.cwd,
203
+ onEvent: onPluginEvent,
204
+ });
205
+ logPluginDiagnostics(
206
+ loadedPlugins.failures,
207
+ loadedPlugins.warnings,
208
+ configOverrides?.logger,
209
+ );
210
+ } catch (error) {
211
+ const message = error instanceof Error ? error.message : String(error);
212
+ configOverrides?.logger?.log?.(
213
+ `plugin loading failed; continuing without plugins (${message})`,
214
+ );
215
+ }
216
+
217
+ const extensions = mergeAgentExtensions(
218
+ configOverrides?.extensions,
219
+ loadedPlugins?.extensions,
220
+ );
221
+ const workspaceMetadata = await buildWorkspaceMetadata(input.config.cwd);
222
+ const baseConfig: CoreSessionConfig = {
223
+ ...input.config,
224
+ ...(configOverrides ?? {}),
225
+ hooks: baseHooks,
226
+ extensions,
227
+ telemetry: configOverrides?.telemetry ?? defaultTelemetry,
228
+ };
229
+ const providerConfig = buildProviderConfig(
230
+ baseConfig,
231
+ providerSettingsManager,
232
+ );
233
+ const hooks = mergeAgentHooks([
234
+ baseConfig.hooks,
235
+ baseConfig.checkpoint?.enabled === true
236
+ ? createCheckpointHooks({
237
+ cwd: baseConfig.cwd,
238
+ sessionId,
239
+ logger: baseConfig.logger,
240
+ createCheckpoint: baseConfig.checkpoint?.createCheckpoint,
241
+ readSessionMetadata,
242
+ writeSessionMetadata,
243
+ })
244
+ : undefined,
245
+ ]);
246
+ const config: CoreSessionConfig = {
247
+ ...baseConfig,
248
+ providerConfig,
249
+ workspaceMetadata,
250
+ hooks,
251
+ };
252
+ const toolPolicies = input.toolPolicies ?? defaultToolPolicies;
253
+ const requestToolApproval =
254
+ input.requestToolApproval ?? defaultRequestToolApproval;
255
+
256
+ return {
257
+ effectiveInput: input,
258
+ config,
259
+ providerConfig,
260
+ workspaceMetadata,
261
+ extensions,
262
+ hooks,
263
+ toolPolicies,
264
+ requestToolApproval,
265
+ pluginSandboxShutdown: loadedPlugins?.shutdown,
266
+ runtimeBuilderInput: {
267
+ config,
268
+ hooks,
269
+ extensions,
270
+ onTeamEvent,
271
+ createSpawnTool,
272
+ onTeamRestored: localRuntime?.onTeamRestored,
273
+ userInstructionWatcher: localRuntime?.userInstructionWatcher,
274
+ defaultToolExecutors,
275
+ logger: config.logger,
276
+ telemetry: config.telemetry,
277
+ teamToolsFactory,
278
+ },
279
+ };
280
+ }
@@ -8,10 +8,10 @@ import type {
8
8
  RpcProviderModel,
9
9
  RpcSaveProviderSettingsActionRequest,
10
10
  } 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";
11
+ import { createOAuthClientCallbacks } from "../../auth/client";
12
+ import { loginClineOAuth } from "../../auth/cline";
13
+ import { loginOpenAICodex } from "../../auth/codex";
14
+ import { loginOcaOAuth } from "../../auth/oca";
15
15
  import type { ProviderSettingsManager } from "../storage/provider-settings-manager";
16
16
  import {
17
17
  readModelsFile,
@@ -3,10 +3,14 @@ import {
3
3
  mkdirSync,
4
4
  readdirSync,
5
5
  rmdirSync,
6
+ rmSync,
6
7
  unlinkSync,
7
8
  } from "node:fs";
8
9
  import { dirname, join } from "node:path";
9
- import { parseSubSessionId, parseTeamTaskSubSessionId } from "./session-graph";
10
+ import {
11
+ parseSubSessionId,
12
+ parseTeamTaskSubSessionId,
13
+ } from "../session/session-graph";
10
14
 
11
15
  export function nowIso(): string {
12
16
  return new Date().toISOString();
@@ -24,8 +28,6 @@ export function unlinkIfExists(path: string | null | undefined): void {
24
28
  }
25
29
 
26
30
  export interface SessionArtifactPaths {
27
- transcriptPath: string;
28
- hookPath: string;
29
31
  messagesPath: string;
30
32
  }
31
33
 
@@ -70,25 +72,14 @@ export class SessionArtifacts {
70
72
  return dir;
71
73
  }
72
74
 
73
- public sessionTranscriptPath(sessionId: string): string {
74
- return join(this.ensureSessionArtifactsDir(sessionId), `${sessionId}.log`);
75
- }
76
-
77
- public sessionHookPath(sessionId: string): string {
78
- return join(
79
- this.ensureSessionArtifactsDir(sessionId),
80
- `${sessionId}.hooks.jsonl`,
81
- );
82
- }
83
-
84
75
  public sessionMessagesPath(sessionId: string): string {
85
76
  return join(
86
- this.ensureSessionArtifactsDir(sessionId),
77
+ this.sessionArtifactsDir(sessionId),
87
78
  `${sessionId}.messages.json`,
88
79
  );
89
80
  }
90
81
 
91
- public sessionManifestPath(sessionId: string, ensureDir = true): string {
82
+ public sessionManifestPath(sessionId: string, ensureDir = false): string {
92
83
  const base = ensureDir
93
84
  ? this.ensureSessionArtifactsDir(sessionId)
94
85
  : this.sessionArtifactsDir(sessionId);
@@ -116,6 +107,21 @@ export class SessionArtifacts {
116
107
  }
117
108
  }
118
109
 
110
+ public removeSessionDir(sessionId: string): void {
111
+ this.removeDir(this.sessionArtifactsDir(sessionId));
112
+ }
113
+
114
+ public removeDir(dir: string): void {
115
+ if (!existsSync(dir)) {
116
+ return;
117
+ }
118
+ try {
119
+ rmSync(dir, { recursive: true, force: true });
120
+ } catch {
121
+ // Best-effort cleanup.
122
+ }
123
+ }
124
+
119
125
  public subagentArtifactPaths(
120
126
  sessionId: string,
121
127
  subAgentId: string,
@@ -124,10 +130,8 @@ export class SessionArtifacts {
124
130
  void subAgentId;
125
131
  void activeTeamTaskSessionId;
126
132
  const { rootSessionId, fileStem } = childArtifactFileStem(sessionId);
127
- const dir = this.ensureSessionArtifactsDir(rootSessionId);
133
+ const dir = this.sessionArtifactsDir(rootSessionId);
128
134
  return {
129
- transcriptPath: join(dir, `${fileStem}.log`),
130
- hookPath: join(dir, `${fileStem}.hooks.jsonl`),
131
135
  messagesPath: join(dir, `${fileStem}.messages.json`),
132
136
  };
133
137
  }
@@ -1,7 +1,7 @@
1
1
  import type { MessageWithMetadata } from "@clinebot/llms";
2
2
  import type { AgentResult } from "@clinebot/shared";
3
3
  import { describe, expect, it } from "vitest";
4
- import { withLatestAssistantTurnMetadata } from "./helpers";
4
+ import { withLatestAssistantTurnMetadata } from "./session-data";
5
5
 
6
6
  type LegacyStoredMessage = MessageWithMetadata & {
7
7
  providerId?: string;