@clinebot/core 0.0.37 → 0.0.38

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 (617) hide show
  1. package/README.md +11 -1
  2. package/dist/ClineCore.d.ts +18 -214
  3. package/dist/account/cline-account-service.d.ts +0 -1
  4. package/dist/account/index.d.ts +0 -1
  5. package/dist/account/rpc.d.ts +0 -1
  6. package/dist/account/types.d.ts +0 -1
  7. package/dist/auth/bounded-ttl-cache.d.ts +0 -1
  8. package/dist/auth/client.d.ts +0 -1
  9. package/dist/auth/cline.d.ts +0 -5
  10. package/dist/auth/codex.d.ts +0 -1
  11. package/dist/auth/oca.d.ts +0 -1
  12. package/dist/auth/server.d.ts +0 -1
  13. package/dist/auth/types.d.ts +0 -1
  14. package/dist/auth/utils.d.ts +0 -1
  15. package/dist/cline-core/automation.d.ts +34 -0
  16. package/dist/cline-core/runtime-services.d.ts +5 -0
  17. package/dist/cline-core/start-input.d.ts +10 -0
  18. package/dist/cline-core/telemetry.d.ts +10 -0
  19. package/dist/cline-core/types.d.ts +221 -0
  20. package/dist/cron/{cron-event-ingress.d.ts → events/cron-event-ingress.d.ts} +1 -2
  21. package/dist/cron/{cron-report-writer.d.ts → reports/cron-report-writer.d.ts} +1 -2
  22. package/dist/cron/{cron-materializer.d.ts → runner/cron-materializer.d.ts} +1 -2
  23. package/dist/cron/{cron-runner.d.ts → runner/cron-runner.d.ts} +6 -4
  24. package/dist/cron/{resource-limiter.d.ts → runner/resource-limiter.d.ts} +0 -1
  25. package/dist/cron/schedule/scheduler.d.ts +12 -0
  26. package/dist/cron/{cron-service.d.ts → service/cron-service.d.ts} +4 -5
  27. package/dist/cron/{schedule-command-service.d.ts → service/schedule-command-service.d.ts} +0 -1
  28. package/dist/cron/{schedule-service.d.ts → service/schedule-service.d.ts} +20 -22
  29. package/dist/cron/{cron-reconciler.d.ts → specs/cron-reconciler.d.ts} +1 -2
  30. package/dist/cron/{cron-spec-parser.d.ts → specs/cron-spec-parser.d.ts} +0 -1
  31. package/dist/cron/{cron-watcher.d.ts → specs/cron-watcher.d.ts} +0 -1
  32. package/dist/cron/{cron-schema.d.ts → store/cron-schema.d.ts} +0 -1
  33. package/dist/cron/{sqlite-cron-store.d.ts → store/sqlite-cron-store.d.ts} +12 -2
  34. package/dist/extensions/config/index.d.ts +4 -7
  35. package/dist/extensions/config/runtime-commands.d.ts +0 -1
  36. package/dist/extensions/config/skill-frontmatter-toggle.d.ts +11 -0
  37. package/dist/extensions/config/unified-config-file-watcher.d.ts +0 -1
  38. package/dist/extensions/config/user-instruction-config-loader.d.ts +0 -1
  39. package/dist/extensions/config/user-instruction-plugin.d.ts +25 -0
  40. package/dist/extensions/config/user-instruction-service.d.ts +23 -0
  41. package/dist/extensions/context/agentic-compaction.d.ts +0 -1
  42. package/dist/extensions/context/basic-compaction.d.ts +0 -1
  43. package/dist/extensions/context/compaction-shared.d.ts +0 -1
  44. package/dist/extensions/context/compaction.d.ts +0 -1
  45. package/dist/extensions/index.d.ts +0 -1
  46. package/dist/extensions/mcp/client.d.ts +0 -1
  47. package/dist/extensions/mcp/config-loader.d.ts +0 -1
  48. package/dist/extensions/mcp/index.d.ts +0 -1
  49. package/dist/extensions/mcp/manager.d.ts +0 -1
  50. package/dist/extensions/mcp/name-transform.d.ts +0 -1
  51. package/dist/extensions/mcp/policies.d.ts +0 -1
  52. package/dist/extensions/mcp/tools.d.ts +2 -3
  53. package/dist/extensions/mcp/types.d.ts +3 -4
  54. package/dist/extensions/plugin/plugin-config-loader.d.ts +0 -1
  55. package/dist/extensions/plugin/plugin-load-report.d.ts +0 -1
  56. package/dist/extensions/plugin/plugin-loader.d.ts +0 -1
  57. package/dist/extensions/plugin/plugin-module-import.d.ts +0 -1
  58. package/dist/extensions/plugin/plugin-sandbox.d.ts +0 -1
  59. package/dist/extensions/plugin/plugin-targeting.d.ts +0 -1
  60. package/dist/extensions/plugin-sandbox-bootstrap.js +1 -446
  61. package/dist/extensions/tools/constants.d.ts +0 -1
  62. package/dist/extensions/tools/definitions.d.ts +13 -14
  63. package/dist/extensions/tools/executors/apply-patch-parser.d.ts +0 -1
  64. package/dist/extensions/tools/executors/apply-patch.d.ts +0 -1
  65. package/dist/extensions/tools/executors/bash.d.ts +0 -1
  66. package/dist/extensions/tools/executors/editor.d.ts +0 -1
  67. package/dist/extensions/tools/executors/file-read.d.ts +0 -1
  68. package/dist/extensions/tools/executors/index.d.ts +0 -1
  69. package/dist/extensions/tools/executors/search.d.ts +0 -1
  70. package/dist/extensions/tools/executors/web-fetch.d.ts +0 -1
  71. package/dist/extensions/tools/helpers.d.ts +0 -1
  72. package/dist/extensions/tools/index.d.ts +2 -3
  73. package/dist/extensions/tools/model-tool-routing.d.ts +0 -1
  74. package/dist/extensions/tools/presets.d.ts +4 -5
  75. package/dist/extensions/tools/runtime.d.ts +0 -1
  76. package/dist/extensions/tools/schemas.d.ts +0 -1
  77. package/dist/extensions/tools/team/delegated-agent.d.ts +3 -4
  78. package/dist/extensions/tools/team/index.d.ts +0 -1
  79. package/dist/extensions/tools/team/multi-agent.d.ts +1 -2
  80. package/dist/extensions/tools/team/projections.d.ts +0 -1
  81. package/dist/extensions/tools/team/runtime.d.ts +0 -1
  82. package/dist/extensions/tools/team/spawn-agent-tool.d.ts +4 -5
  83. package/dist/extensions/tools/team/subagent-prompts.d.ts +0 -1
  84. package/dist/extensions/tools/team/team-tools.d.ts +7 -8
  85. package/dist/extensions/tools/types.d.ts +11 -12
  86. package/dist/hooks/checkpoint-hooks.d.ts +9 -2
  87. package/dist/hooks/hook-extension.d.ts +2 -0
  88. package/dist/{extensions/config/hooks-config-loader.d.ts → hooks/hook-file-config.d.ts} +1 -2
  89. package/dist/hooks/hook-file-hooks.d.ts +2 -2
  90. package/dist/hooks/index.d.ts +3 -1
  91. package/dist/hooks/subprocess-runner.d.ts +0 -1
  92. package/dist/hooks/subprocess.d.ts +0 -1
  93. package/dist/hub/{connect.d.ts → client/connect.d.ts} +1 -2
  94. package/dist/hub/{client.d.ts → client/index.d.ts} +41 -4
  95. package/dist/hub/{session-client.d.ts → client/session-client.d.ts} +41 -13
  96. package/dist/hub/{ui-client.d.ts → client/ui-client.d.ts} +1 -1
  97. package/dist/hub/daemon/entry.d.ts +1 -0
  98. package/dist/hub/daemon/entry.js +720 -0
  99. package/dist/hub/{daemon.d.ts → daemon/index.d.ts} +6 -3
  100. package/dist/hub/{runtime-handlers.d.ts → daemon/runtime-handlers.d.ts} +3 -2
  101. package/dist/hub/{start-shared-server.d.ts → daemon/start-shared-server.d.ts} +1 -2
  102. package/dist/hub/{defaults.d.ts → discovery/defaults.d.ts} +0 -1
  103. package/dist/hub/{discovery.d.ts → discovery/index.d.ts} +2 -1
  104. package/dist/hub/{workspace.d.ts → discovery/workspace.d.ts} +1 -2
  105. package/dist/hub/index.d.ts +28 -11
  106. package/dist/hub/index.js +484 -1061
  107. package/dist/hub/runtime-host/hub-runtime-host.d.ts +73 -0
  108. package/dist/{transports/remote.d.ts → hub/runtime-host/remote-runtime-host.d.ts} +1 -2
  109. package/dist/hub/{browser-websocket.d.ts → server/browser-websocket.d.ts} +1 -2
  110. package/dist/hub/{transport.d.ts → server/command-transport.d.ts} +0 -1
  111. package/dist/hub/server/handlers/approval-handlers.d.ts +17 -0
  112. package/dist/hub/server/handlers/capability-handlers.d.ts +12 -0
  113. package/dist/hub/server/handlers/client-handlers.d.ts +6 -0
  114. package/dist/hub/server/handlers/context.d.ts +56 -0
  115. package/dist/hub/server/handlers/run-handlers.d.ts +5 -0
  116. package/dist/hub/server/handlers/session-event-projector.d.ts +7 -0
  117. package/dist/hub/server/handlers/session-handlers.d.ts +20 -0
  118. package/dist/hub/server/hub-client-contributions.d.ts +19 -0
  119. package/dist/hub/server/hub-notifications.d.ts +7 -0
  120. package/dist/hub/server/hub-schedule-events.d.ts +2 -0
  121. package/dist/hub/server/hub-server-logging.d.ts +2 -0
  122. package/dist/hub/server/hub-server-options.d.ts +55 -0
  123. package/dist/hub/server/hub-server-transport.d.ts +34 -0
  124. package/dist/hub/server/hub-session-records.d.ts +8 -0
  125. package/dist/hub/server/hub-websocket-server.d.ts +6 -0
  126. package/dist/hub/server/index.d.ts +4 -0
  127. package/dist/hub/{native-transport.d.ts → server/native-transport.d.ts} +1 -2
  128. package/dist/index.d.ts +51 -41
  129. package/dist/index.js +214 -872
  130. package/dist/runtime/capabilities/index.d.ts +2 -0
  131. package/dist/runtime/capabilities/normalize-runtime-capabilities.d.ts +2 -0
  132. package/dist/runtime/capabilities/runtime-capabilities.d.ts +6 -0
  133. package/dist/runtime/config/agent-message-codec.d.ts +6 -0
  134. package/dist/runtime/{agent-runtime-config-builder.d.ts → config/agent-runtime-config-builder.d.ts} +12 -21
  135. package/dist/runtime/host/history.d.ts +18 -0
  136. package/dist/runtime/{host.d.ts → host/host.d.ts} +3 -4
  137. package/dist/runtime/host/local/agent-event-bridge.d.ts +29 -0
  138. package/dist/runtime/host/local/session-record.d.ts +6 -0
  139. package/dist/runtime/host/local/session-service-invoker.d.ts +4 -0
  140. package/dist/runtime/host/local/spawn-tool.d.ts +15 -0
  141. package/dist/runtime/host/local/user-files.d.ts +1 -0
  142. package/dist/runtime/host/local-runtime-host.d.ts +118 -0
  143. package/dist/{transports → runtime/host}/runtime-host-support.d.ts +3 -5
  144. package/dist/runtime/{runtime-host.d.ts → host/runtime-host.d.ts} +66 -31
  145. package/dist/runtime/{runtime-builder.d.ts → orchestration/runtime-builder.d.ts} +0 -1
  146. package/dist/runtime/{runtime-event-adapter.d.ts → orchestration/runtime-event-adapter.d.ts} +0 -1
  147. package/dist/runtime/{runtime-oauth-token-manager.d.ts → orchestration/runtime-oauth-token-manager.d.ts} +1 -2
  148. package/dist/runtime/{session-runtime-orchestrator.d.ts → orchestration/session-runtime-orchestrator.d.ts} +20 -63
  149. package/dist/runtime/{session-runtime.d.ts → orchestration/session-runtime.d.ts} +14 -12
  150. package/dist/runtime/{user-input-builder.d.ts → orchestration/user-input-builder.d.ts} +2 -11
  151. package/dist/runtime/{loop-detection.d.ts → safety/loop-detection.d.ts} +0 -1
  152. package/dist/runtime/{mistake-tracker.d.ts → safety/mistake-tracker.d.ts} +0 -1
  153. package/dist/runtime/{rules.d.ts → safety/rules.d.ts} +1 -2
  154. package/dist/runtime/{subprocess-sandbox.d.ts → tools/subprocess-sandbox.d.ts} +15 -1
  155. package/dist/runtime/{tool-approval.d.ts → tools/tool-approval.d.ts} +0 -1
  156. package/dist/runtime/turn-queue/pending-prompt-service.d.ts +64 -0
  157. package/dist/services/agent-events.d.ts +1 -2
  158. package/dist/services/config.d.ts +0 -1
  159. package/dist/services/global-settings.d.ts +27 -5
  160. package/dist/{llms → services/llms}/cline-recommended-models.d.ts +1 -2
  161. package/dist/{llms → services/llms}/configured-provider-registry.d.ts +0 -1
  162. package/dist/services/llms/handler-factory.d.ts +3 -0
  163. package/dist/{llms → services/llms}/provider-defaults.d.ts +2 -1
  164. package/dist/{llms → services/llms}/provider-settings.d.ts +5 -3
  165. package/dist/{llms → services/llms}/runtime-config.d.ts +0 -1
  166. package/dist/{llms → services/llms}/runtime-registry.d.ts +0 -1
  167. package/dist/{llms → services/llms}/runtime-types.d.ts +0 -1
  168. package/dist/services/local-runtime-bootstrap.d.ts +7 -9
  169. package/dist/services/plugin-tools.d.ts +0 -1
  170. package/dist/services/providers/local-provider-registry.d.ts +9 -10
  171. package/dist/services/providers/local-provider-service.d.ts +36 -3
  172. package/dist/services/providers/model-source.d.ts +3 -0
  173. package/dist/services/session-artifacts.d.ts +0 -1
  174. package/dist/services/session-data.d.ts +2 -3
  175. package/dist/services/session-telemetry.d.ts +0 -1
  176. package/dist/services/storage/file-team-store.d.ts +0 -1
  177. package/dist/services/storage/provider-settings-legacy-migration.d.ts +0 -1
  178. package/dist/services/storage/provider-settings-manager.d.ts +3 -4
  179. package/dist/services/storage/sqlite-session-store.d.ts +0 -1
  180. package/dist/services/storage/sqlite-team-store.d.ts +0 -1
  181. package/dist/services/storage/team-store.d.ts +0 -1
  182. package/dist/services/telemetry/ITelemetryAdapter.d.ts +0 -1
  183. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts +0 -1
  184. package/dist/services/telemetry/OpenTelemetryProvider.d.ts +32 -1
  185. package/dist/services/telemetry/TelemetryLoggerSink.d.ts +0 -1
  186. package/dist/services/telemetry/TelemetryService.d.ts +0 -1
  187. package/dist/services/telemetry/core-events.d.ts +46 -3
  188. package/dist/services/telemetry/distinct-id.d.ts +0 -1
  189. package/dist/services/telemetry/index.d.ts +1 -2
  190. package/dist/services/telemetry/index.js +1 -0
  191. package/dist/services/usage.d.ts +10 -2
  192. package/dist/services/workspace/file-indexer.d.ts +0 -1
  193. package/dist/services/workspace/index.d.ts +0 -1
  194. package/dist/services/workspace/mention-enricher.d.ts +0 -1
  195. package/dist/{session → services/workspace}/workspace-manager.d.ts +0 -1
  196. package/dist/services/{workspace-manifest.d.ts → workspace/workspace-manifest.d.ts} +20 -5
  197. package/dist/services/workspace/workspace-telemetry.d.ts +18 -0
  198. package/dist/session/checkpoint-restore.d.ts +20 -0
  199. package/dist/session/{session-graph.d.ts → models/session-graph.d.ts} +2 -3
  200. package/dist/session/{session-manifest.d.ts → models/session-manifest.d.ts} +0 -1
  201. package/dist/session/{session-row.d.ts → models/session-row.d.ts} +2 -3
  202. package/dist/session/{file-session-service.d.ts → services/file-session-service.d.ts} +1 -2
  203. package/dist/session/{message-builder.d.ts → services/message-builder.d.ts} +7 -16
  204. package/dist/session/{persistence-service.d.ts → services/persistence-service.d.ts} +10 -11
  205. package/dist/session/{session-service.d.ts → services/session-service.d.ts} +4 -5
  206. package/dist/session/session-snapshot.d.ts +57 -0
  207. package/dist/session/session-versioning-service.d.ts +48 -0
  208. package/dist/session/{conversation-store.d.ts → stores/conversation-store.d.ts} +0 -1
  209. package/dist/session/{session-manifest-store.d.ts → stores/session-manifest-store.d.ts} +3 -4
  210. package/dist/session/{team-persistence-store.d.ts → stores/team-persistence-store.d.ts} +2 -3
  211. package/dist/session/team/index.d.ts +2 -0
  212. package/dist/session/{subagent-session-manager.d.ts → team/team-child-session-manager.d.ts} +7 -8
  213. package/dist/session/{session-team-coordination.d.ts → team/team-session-coordinator.d.ts} +3 -4
  214. package/dist/settings/index.d.ts +2 -0
  215. package/dist/settings/settings-service.d.ts +6 -0
  216. package/dist/settings/types.d.ts +42 -0
  217. package/dist/types/chat-schema.d.ts +24 -7
  218. package/dist/types/common.d.ts +0 -1
  219. package/dist/types/config.d.ts +2 -3
  220. package/dist/types/events.d.ts +8 -1
  221. package/dist/types/provider-settings.d.ts +2 -3
  222. package/dist/types/session.d.ts +22 -6
  223. package/dist/types/sessions.d.ts +0 -1
  224. package/dist/types/storage.d.ts +0 -1
  225. package/dist/types.d.ts +17 -14
  226. package/dist/version.d.ts +0 -1
  227. package/package.json +16 -12
  228. package/dist/ClineCore.d.ts.map +0 -1
  229. package/dist/account/cline-account-service.d.ts.map +0 -1
  230. package/dist/account/index.d.ts.map +0 -1
  231. package/dist/account/rpc.d.ts.map +0 -1
  232. package/dist/account/types.d.ts.map +0 -1
  233. package/dist/auth/bounded-ttl-cache.d.ts.map +0 -1
  234. package/dist/auth/client.d.ts.map +0 -1
  235. package/dist/auth/cline.d.ts.map +0 -1
  236. package/dist/auth/codex.d.ts.map +0 -1
  237. package/dist/auth/oca.d.ts.map +0 -1
  238. package/dist/auth/server.d.ts.map +0 -1
  239. package/dist/auth/types.d.ts.map +0 -1
  240. package/dist/auth/utils.d.ts.map +0 -1
  241. package/dist/cron/cron-event-ingress.d.ts.map +0 -1
  242. package/dist/cron/cron-materializer.d.ts.map +0 -1
  243. package/dist/cron/cron-reconciler.d.ts.map +0 -1
  244. package/dist/cron/cron-report-writer.d.ts.map +0 -1
  245. package/dist/cron/cron-runner.d.ts.map +0 -1
  246. package/dist/cron/cron-schema.d.ts.map +0 -1
  247. package/dist/cron/cron-service.d.ts.map +0 -1
  248. package/dist/cron/cron-spec-parser.d.ts.map +0 -1
  249. package/dist/cron/cron-watcher.d.ts.map +0 -1
  250. package/dist/cron/resource-limiter.d.ts.map +0 -1
  251. package/dist/cron/schedule-command-service.d.ts.map +0 -1
  252. package/dist/cron/schedule-service.d.ts.map +0 -1
  253. package/dist/cron/scheduler.d.ts +0 -68
  254. package/dist/cron/scheduler.d.ts.map +0 -1
  255. package/dist/cron/sqlite-cron-store.d.ts.map +0 -1
  256. package/dist/cron/sqlite-schedule-store.d.ts +0 -52
  257. package/dist/cron/sqlite-schedule-store.d.ts.map +0 -1
  258. package/dist/extensions/config/agent-config-loader.d.ts +0 -20
  259. package/dist/extensions/config/agent-config-loader.d.ts.map +0 -1
  260. package/dist/extensions/config/agent-config-parser.d.ts +0 -29
  261. package/dist/extensions/config/agent-config-parser.d.ts.map +0 -1
  262. package/dist/extensions/config/hooks-config-loader.d.ts.map +0 -1
  263. package/dist/extensions/config/index.d.ts.map +0 -1
  264. package/dist/extensions/config/runtime-commands.d.ts.map +0 -1
  265. package/dist/extensions/config/unified-config-file-watcher.d.ts.map +0 -1
  266. package/dist/extensions/config/user-instruction-config-loader.d.ts.map +0 -1
  267. package/dist/extensions/context/agentic-compaction.d.ts.map +0 -1
  268. package/dist/extensions/context/basic-compaction.d.ts.map +0 -1
  269. package/dist/extensions/context/compaction-shared.d.ts.map +0 -1
  270. package/dist/extensions/context/compaction.d.ts.map +0 -1
  271. package/dist/extensions/index.d.ts.map +0 -1
  272. package/dist/extensions/mcp/client.d.ts.map +0 -1
  273. package/dist/extensions/mcp/config-loader.d.ts.map +0 -1
  274. package/dist/extensions/mcp/index.d.ts.map +0 -1
  275. package/dist/extensions/mcp/manager.d.ts.map +0 -1
  276. package/dist/extensions/mcp/name-transform.d.ts.map +0 -1
  277. package/dist/extensions/mcp/policies.d.ts.map +0 -1
  278. package/dist/extensions/mcp/tools.d.ts.map +0 -1
  279. package/dist/extensions/mcp/types.d.ts.map +0 -1
  280. package/dist/extensions/plugin/plugin-config-loader.d.ts.map +0 -1
  281. package/dist/extensions/plugin/plugin-load-report.d.ts.map +0 -1
  282. package/dist/extensions/plugin/plugin-loader.d.ts.map +0 -1
  283. package/dist/extensions/plugin/plugin-module-import.d.ts.map +0 -1
  284. package/dist/extensions/plugin/plugin-sandbox.d.ts.map +0 -1
  285. package/dist/extensions/plugin/plugin-targeting.d.ts.map +0 -1
  286. package/dist/extensions/tools/constants.d.ts.map +0 -1
  287. package/dist/extensions/tools/definitions.d.ts.map +0 -1
  288. package/dist/extensions/tools/executors/apply-patch-parser.d.ts.map +0 -1
  289. package/dist/extensions/tools/executors/apply-patch.d.ts.map +0 -1
  290. package/dist/extensions/tools/executors/bash.d.ts.map +0 -1
  291. package/dist/extensions/tools/executors/editor.d.ts.map +0 -1
  292. package/dist/extensions/tools/executors/file-read.d.ts.map +0 -1
  293. package/dist/extensions/tools/executors/index.d.ts.map +0 -1
  294. package/dist/extensions/tools/executors/search.d.ts.map +0 -1
  295. package/dist/extensions/tools/executors/web-fetch.d.ts.map +0 -1
  296. package/dist/extensions/tools/helpers.d.ts.map +0 -1
  297. package/dist/extensions/tools/index.d.ts.map +0 -1
  298. package/dist/extensions/tools/model-tool-routing.d.ts.map +0 -1
  299. package/dist/extensions/tools/presets.d.ts.map +0 -1
  300. package/dist/extensions/tools/runtime.d.ts.map +0 -1
  301. package/dist/extensions/tools/schemas.d.ts.map +0 -1
  302. package/dist/extensions/tools/team/delegated-agent.d.ts.map +0 -1
  303. package/dist/extensions/tools/team/index.d.ts.map +0 -1
  304. package/dist/extensions/tools/team/multi-agent.d.ts.map +0 -1
  305. package/dist/extensions/tools/team/projections.d.ts.map +0 -1
  306. package/dist/extensions/tools/team/runtime.d.ts.map +0 -1
  307. package/dist/extensions/tools/team/spawn-agent-tool.d.ts.map +0 -1
  308. package/dist/extensions/tools/team/subagent-prompts.d.ts.map +0 -1
  309. package/dist/extensions/tools/team/team-tools.d.ts.map +0 -1
  310. package/dist/extensions/tools/types.d.ts.map +0 -1
  311. package/dist/hooks/checkpoint-hooks.d.ts.map +0 -1
  312. package/dist/hooks/hook-bridge.d.ts +0 -118
  313. package/dist/hooks/hook-bridge.d.ts.map +0 -1
  314. package/dist/hooks/hook-file-hooks.d.ts.map +0 -1
  315. package/dist/hooks/hook-registry.d.ts +0 -16
  316. package/dist/hooks/hook-registry.d.ts.map +0 -1
  317. package/dist/hooks/index.d.ts.map +0 -1
  318. package/dist/hooks/subprocess-runner.d.ts.map +0 -1
  319. package/dist/hooks/subprocess.d.ts.map +0 -1
  320. package/dist/hub/browser-websocket.d.ts.map +0 -1
  321. package/dist/hub/client.d.ts.map +0 -1
  322. package/dist/hub/connect.d.ts.map +0 -1
  323. package/dist/hub/daemon-entry.d.ts +0 -2
  324. package/dist/hub/daemon-entry.d.ts.map +0 -1
  325. package/dist/hub/daemon-entry.js +0 -1305
  326. package/dist/hub/daemon.d.ts.map +0 -1
  327. package/dist/hub/defaults.d.ts.map +0 -1
  328. package/dist/hub/discovery.d.ts.map +0 -1
  329. package/dist/hub/index.d.ts.map +0 -1
  330. package/dist/hub/native-transport.d.ts.map +0 -1
  331. package/dist/hub/runtime-handlers.d.ts.map +0 -1
  332. package/dist/hub/server.d.ts +0 -104
  333. package/dist/hub/server.d.ts.map +0 -1
  334. package/dist/hub/session-client.d.ts.map +0 -1
  335. package/dist/hub/start-shared-server.d.ts.map +0 -1
  336. package/dist/hub/transport.d.ts.map +0 -1
  337. package/dist/hub/ui-client.d.ts.map +0 -1
  338. package/dist/hub/workspace.d.ts.map +0 -1
  339. package/dist/index.d.ts.map +0 -1
  340. package/dist/llms/cline-recommended-models.d.ts.map +0 -1
  341. package/dist/llms/configured-provider-registry.d.ts.map +0 -1
  342. package/dist/llms/handler-factory.d.ts +0 -16
  343. package/dist/llms/handler-factory.d.ts.map +0 -1
  344. package/dist/llms/provider-defaults.d.ts.map +0 -1
  345. package/dist/llms/provider-settings.d.ts.map +0 -1
  346. package/dist/llms/runtime-config.d.ts.map +0 -1
  347. package/dist/llms/runtime-registry.d.ts.map +0 -1
  348. package/dist/llms/runtime-types.d.ts.map +0 -1
  349. package/dist/runtime/agent-config-adapter.d.ts +0 -148
  350. package/dist/runtime/agent-config-adapter.d.ts.map +0 -1
  351. package/dist/runtime/agent-runtime-config-builder.d.ts.map +0 -1
  352. package/dist/runtime/history.d.ts +0 -10
  353. package/dist/runtime/history.d.ts.map +0 -1
  354. package/dist/runtime/host.d.ts.map +0 -1
  355. package/dist/runtime/loop-detection.d.ts.map +0 -1
  356. package/dist/runtime/mistake-tracker.d.ts.map +0 -1
  357. package/dist/runtime/rules.d.ts.map +0 -1
  358. package/dist/runtime/runtime-builder.d.ts.map +0 -1
  359. package/dist/runtime/runtime-event-adapter.d.ts.map +0 -1
  360. package/dist/runtime/runtime-host.d.ts.map +0 -1
  361. package/dist/runtime/runtime-oauth-token-manager.d.ts.map +0 -1
  362. package/dist/runtime/session-runtime-orchestrator.d.ts.map +0 -1
  363. package/dist/runtime/session-runtime.d.ts.map +0 -1
  364. package/dist/runtime/subprocess-sandbox.d.ts.map +0 -1
  365. package/dist/runtime/tool-approval.d.ts.map +0 -1
  366. package/dist/runtime/user-input-builder.d.ts.map +0 -1
  367. package/dist/services/agent-events.d.ts.map +0 -1
  368. package/dist/services/config.d.ts.map +0 -1
  369. package/dist/services/global-settings.d.ts.map +0 -1
  370. package/dist/services/index.js +0 -28
  371. package/dist/services/local-runtime-bootstrap.d.ts.map +0 -1
  372. package/dist/services/plugin-tools.d.ts.map +0 -1
  373. package/dist/services/providers/local-provider-registry.d.ts.map +0 -1
  374. package/dist/services/providers/local-provider-service.d.ts.map +0 -1
  375. package/dist/services/session-artifacts.d.ts.map +0 -1
  376. package/dist/services/session-data.d.ts.map +0 -1
  377. package/dist/services/session-telemetry.d.ts.map +0 -1
  378. package/dist/services/storage/file-team-store.d.ts.map +0 -1
  379. package/dist/services/storage/provider-settings-legacy-migration.d.ts.map +0 -1
  380. package/dist/services/storage/provider-settings-manager.d.ts.map +0 -1
  381. package/dist/services/storage/sqlite-session-store.d.ts.map +0 -1
  382. package/dist/services/storage/sqlite-team-store.d.ts.map +0 -1
  383. package/dist/services/storage/team-store.d.ts.map +0 -1
  384. package/dist/services/telemetry/ITelemetryAdapter.d.ts.map +0 -1
  385. package/dist/services/telemetry/OpenTelemetryAdapter.d.ts.map +0 -1
  386. package/dist/services/telemetry/OpenTelemetryProvider.d.ts.map +0 -1
  387. package/dist/services/telemetry/TelemetryLoggerSink.d.ts.map +0 -1
  388. package/dist/services/telemetry/TelemetryService.d.ts.map +0 -1
  389. package/dist/services/telemetry/core-events.d.ts.map +0 -1
  390. package/dist/services/telemetry/distinct-id.d.ts.map +0 -1
  391. package/dist/services/telemetry/index.d.ts.map +0 -1
  392. package/dist/services/usage.d.ts.map +0 -1
  393. package/dist/services/workspace/file-indexer.d.ts.map +0 -1
  394. package/dist/services/workspace/index.d.ts.map +0 -1
  395. package/dist/services/workspace/mention-enricher.d.ts.map +0 -1
  396. package/dist/services/workspace-manifest.d.ts.map +0 -1
  397. package/dist/session/conversation-store.d.ts.map +0 -1
  398. package/dist/session/file-session-service.d.ts.map +0 -1
  399. package/dist/session/message-builder.d.ts.map +0 -1
  400. package/dist/session/persistence-service.d.ts.map +0 -1
  401. package/dist/session/session-graph.d.ts.map +0 -1
  402. package/dist/session/session-manifest-store.d.ts.map +0 -1
  403. package/dist/session/session-manifest.d.ts.map +0 -1
  404. package/dist/session/session-row.d.ts.map +0 -1
  405. package/dist/session/session-service.d.ts.map +0 -1
  406. package/dist/session/session-team-coordination.d.ts.map +0 -1
  407. package/dist/session/subagent-session-manager.d.ts.map +0 -1
  408. package/dist/session/team-persistence-store.d.ts.map +0 -1
  409. package/dist/session/workspace-manager.d.ts.map +0 -1
  410. package/dist/transports/hub.d.ts +0 -58
  411. package/dist/transports/hub.d.ts.map +0 -1
  412. package/dist/transports/local.d.ts +0 -119
  413. package/dist/transports/local.d.ts.map +0 -1
  414. package/dist/transports/remote.d.ts.map +0 -1
  415. package/dist/transports/runtime-host-support.d.ts.map +0 -1
  416. package/dist/types/chat-schema.d.ts.map +0 -1
  417. package/dist/types/common.d.ts.map +0 -1
  418. package/dist/types/config.d.ts.map +0 -1
  419. package/dist/types/events.d.ts.map +0 -1
  420. package/dist/types/provider-settings.d.ts.map +0 -1
  421. package/dist/types/session.d.ts.map +0 -1
  422. package/dist/types/sessions.d.ts.map +0 -1
  423. package/dist/types/storage.d.ts.map +0 -1
  424. package/dist/types.d.ts.map +0 -1
  425. package/dist/version.d.ts.map +0 -1
  426. package/src/ClineCore.ts +0 -1026
  427. package/src/account/cline-account-service.ts +0 -338
  428. package/src/account/index.ts +0 -24
  429. package/src/account/rpc.ts +0 -185
  430. package/src/account/types.ts +0 -108
  431. package/src/auth/bounded-ttl-cache.ts +0 -53
  432. package/src/auth/client.ts +0 -46
  433. package/src/auth/cline.ts +0 -724
  434. package/src/auth/codex.ts +0 -491
  435. package/src/auth/oca.ts +0 -588
  436. package/src/auth/server.ts +0 -265
  437. package/src/auth/types.ts +0 -110
  438. package/src/auth/utils.ts +0 -247
  439. package/src/cron/cron-event-ingress.ts +0 -357
  440. package/src/cron/cron-materializer.ts +0 -97
  441. package/src/cron/cron-reconciler.ts +0 -241
  442. package/src/cron/cron-report-writer.ts +0 -153
  443. package/src/cron/cron-runner.ts +0 -495
  444. package/src/cron/cron-schema.ts +0 -127
  445. package/src/cron/cron-service.ts +0 -163
  446. package/src/cron/cron-spec-parser.ts +0 -489
  447. package/src/cron/cron-watcher.ts +0 -102
  448. package/src/cron/index.ts +0 -15
  449. package/src/cron/resource-limiter.ts +0 -46
  450. package/src/cron/schedule-command-service.ts +0 -193
  451. package/src/cron/schedule-service.ts +0 -703
  452. package/src/cron/scheduler.ts +0 -772
  453. package/src/cron/sqlite-cron-store.ts +0 -1286
  454. package/src/cron/sqlite-schedule-store.ts +0 -708
  455. package/src/extensions/config/agent-config-loader.ts +0 -114
  456. package/src/extensions/config/agent-config-parser.ts +0 -198
  457. package/src/extensions/config/hooks-config-loader.ts +0 -117
  458. package/src/extensions/config/index.ts +0 -77
  459. package/src/extensions/config/runtime-commands.ts +0 -82
  460. package/src/extensions/config/unified-config-file-watcher.ts +0 -496
  461. package/src/extensions/config/user-instruction-config-loader.ts +0 -549
  462. package/src/extensions/context/agentic-compaction.ts +0 -131
  463. package/src/extensions/context/basic-compaction.ts +0 -300
  464. package/src/extensions/context/compaction-shared.ts +0 -459
  465. package/src/extensions/context/compaction.ts +0 -226
  466. package/src/extensions/index.ts +0 -18
  467. package/src/extensions/mcp/client.ts +0 -420
  468. package/src/extensions/mcp/config-loader.ts +0 -219
  469. package/src/extensions/mcp/index.ts +0 -42
  470. package/src/extensions/mcp/manager.ts +0 -260
  471. package/src/extensions/mcp/name-transform.ts +0 -33
  472. package/src/extensions/mcp/policies.ts +0 -47
  473. package/src/extensions/mcp/tools.ts +0 -47
  474. package/src/extensions/mcp/types.ts +0 -116
  475. package/src/extensions/plugin/plugin-config-loader.ts +0 -140
  476. package/src/extensions/plugin/plugin-load-report.ts +0 -20
  477. package/src/extensions/plugin/plugin-loader.ts +0 -220
  478. package/src/extensions/plugin/plugin-module-import.ts +0 -276
  479. package/src/extensions/plugin/plugin-sandbox-bootstrap.ts +0 -662
  480. package/src/extensions/plugin/plugin-sandbox.ts +0 -586
  481. package/src/extensions/plugin/plugin-targeting.ts +0 -32
  482. package/src/extensions/tools/constants.ts +0 -37
  483. package/src/extensions/tools/definitions.ts +0 -738
  484. package/src/extensions/tools/executors/apply-patch-parser.ts +0 -520
  485. package/src/extensions/tools/executors/apply-patch.ts +0 -348
  486. package/src/extensions/tools/executors/bash.ts +0 -207
  487. package/src/extensions/tools/executors/editor.ts +0 -220
  488. package/src/extensions/tools/executors/file-read.ts +0 -135
  489. package/src/extensions/tools/executors/index.ts +0 -87
  490. package/src/extensions/tools/executors/search.ts +0 -470
  491. package/src/extensions/tools/executors/web-fetch.ts +0 -259
  492. package/src/extensions/tools/helpers.ts +0 -154
  493. package/src/extensions/tools/index.ts +0 -183
  494. package/src/extensions/tools/model-tool-routing.ts +0 -134
  495. package/src/extensions/tools/presets.ts +0 -190
  496. package/src/extensions/tools/runtime.ts +0 -261
  497. package/src/extensions/tools/schemas.ts +0 -343
  498. package/src/extensions/tools/team/delegated-agent.ts +0 -136
  499. package/src/extensions/tools/team/index.ts +0 -5
  500. package/src/extensions/tools/team/multi-agent.ts +0 -1845
  501. package/src/extensions/tools/team/projections.ts +0 -283
  502. package/src/extensions/tools/team/runtime.ts +0 -54
  503. package/src/extensions/tools/team/spawn-agent-tool.ts +0 -201
  504. package/src/extensions/tools/team/subagent-prompts.ts +0 -41
  505. package/src/extensions/tools/team/team-tools.ts +0 -902
  506. package/src/extensions/tools/types.ts +0 -354
  507. package/src/hooks/checkpoint-hooks.ts +0 -238
  508. package/src/hooks/hook-bridge.ts +0 -489
  509. package/src/hooks/hook-file-hooks.ts +0 -934
  510. package/src/hooks/hook-registry.ts +0 -257
  511. package/src/hooks/index.ts +0 -18
  512. package/src/hooks/subprocess-runner.ts +0 -196
  513. package/src/hooks/subprocess.ts +0 -469
  514. package/src/hub/browser-websocket.ts +0 -159
  515. package/src/hub/client.ts +0 -633
  516. package/src/hub/connect.ts +0 -156
  517. package/src/hub/daemon-entry.ts +0 -122
  518. package/src/hub/daemon.ts +0 -284
  519. package/src/hub/defaults.ts +0 -70
  520. package/src/hub/discovery.ts +0 -247
  521. package/src/hub/index.ts +0 -14
  522. package/src/hub/native-transport.ts +0 -31
  523. package/src/hub/runtime-handlers.ts +0 -141
  524. package/src/hub/server.ts +0 -2317
  525. package/src/hub/session-client.ts +0 -502
  526. package/src/hub/start-shared-server.ts +0 -61
  527. package/src/hub/transport.ts +0 -14
  528. package/src/hub/ui-client.ts +0 -126
  529. package/src/hub/workspace.ts +0 -19
  530. package/src/index.ts +0 -688
  531. package/src/llms/cline-recommended-models.ts +0 -167
  532. package/src/llms/configured-provider-registry.ts +0 -193
  533. package/src/llms/handler-factory.ts +0 -56
  534. package/src/llms/provider-defaults.ts +0 -653
  535. package/src/llms/provider-settings.ts +0 -310
  536. package/src/llms/runtime-config.ts +0 -43
  537. package/src/llms/runtime-registry.ts +0 -172
  538. package/src/llms/runtime-types.ts +0 -121
  539. package/src/runtime/agent-config-adapter.ts +0 -636
  540. package/src/runtime/agent-runtime-config-builder.ts +0 -205
  541. package/src/runtime/error-feedback.ts +0 -142
  542. package/src/runtime/history.ts +0 -374
  543. package/src/runtime/host.ts +0 -222
  544. package/src/runtime/index.ts +0 -23
  545. package/src/runtime/loop-detection.ts +0 -162
  546. package/src/runtime/mistake-tracker.ts +0 -221
  547. package/src/runtime/rules.ts +0 -49
  548. package/src/runtime/runtime-builder.ts +0 -814
  549. package/src/runtime/runtime-event-adapter.ts +0 -412
  550. package/src/runtime/runtime-host.ts +0 -250
  551. package/src/runtime/runtime-oauth-token-manager.ts +0 -268
  552. package/src/runtime/session-runtime-orchestrator.ts +0 -1253
  553. package/src/runtime/session-runtime.ts +0 -69
  554. package/src/runtime/subprocess-sandbox.ts +0 -255
  555. package/src/runtime/tool-approval.ts +0 -102
  556. package/src/runtime/user-input-builder.ts +0 -167
  557. package/src/services/agent-events.ts +0 -256
  558. package/src/services/config.ts +0 -5
  559. package/src/services/global-settings.ts +0 -122
  560. package/src/services/local-runtime-bootstrap.ts +0 -424
  561. package/src/services/plugin-tools.ts +0 -86
  562. package/src/services/providers/local-provider-registry.ts +0 -456
  563. package/src/services/providers/local-provider-service.ts +0 -772
  564. package/src/services/session-artifacts.ts +0 -138
  565. package/src/services/session-data.ts +0 -398
  566. package/src/services/session-telemetry.ts +0 -89
  567. package/src/services/storage/artifact-store.ts +0 -1
  568. package/src/services/storage/file-team-store.ts +0 -250
  569. package/src/services/storage/index.ts +0 -11
  570. package/src/services/storage/provider-settings-legacy-migration.ts +0 -789
  571. package/src/services/storage/provider-settings-manager.ts +0 -167
  572. package/src/services/storage/session-store.ts +0 -1
  573. package/src/services/storage/sqlite-session-store.ts +0 -270
  574. package/src/services/storage/sqlite-team-store.ts +0 -537
  575. package/src/services/storage/team-store.ts +0 -36
  576. package/src/services/telemetry/ITelemetryAdapter.ts +0 -94
  577. package/src/services/telemetry/OpenTelemetryAdapter.ts +0 -348
  578. package/src/services/telemetry/OpenTelemetryProvider.ts +0 -415
  579. package/src/services/telemetry/TelemetryLoggerSink.ts +0 -121
  580. package/src/services/telemetry/TelemetryService.ts +0 -139
  581. package/src/services/telemetry/core-events.ts +0 -400
  582. package/src/services/telemetry/distinct-id.ts +0 -58
  583. package/src/services/telemetry/index.ts +0 -20
  584. package/src/services/usage.ts +0 -32
  585. package/src/services/workspace/file-indexer.ts +0 -351
  586. package/src/services/workspace/index.ts +0 -7
  587. package/src/services/workspace/mention-enricher.ts +0 -122
  588. package/src/services/workspace-manifest.ts +0 -72
  589. package/src/session/conversation-store.ts +0 -77
  590. package/src/session/file-session-service.ts +0 -282
  591. package/src/session/index.ts +0 -32
  592. package/src/session/message-builder.ts +0 -941
  593. package/src/session/persistence-service.ts +0 -559
  594. package/src/session/session-graph.ts +0 -92
  595. package/src/session/session-manifest-store.ts +0 -158
  596. package/src/session/session-manifest.ts +0 -29
  597. package/src/session/session-row.ts +0 -199
  598. package/src/session/session-service.ts +0 -324
  599. package/src/session/session-team-coordination.ts +0 -240
  600. package/src/session/subagent-session-manager.ts +0 -397
  601. package/src/session/team-persistence-store.ts +0 -176
  602. package/src/session/workspace-manager.ts +0 -100
  603. package/src/transports/hub.ts +0 -1081
  604. package/src/transports/local.ts +0 -1826
  605. package/src/transports/remote.ts +0 -27
  606. package/src/transports/runtime-host-support.ts +0 -140
  607. package/src/types/chat-schema.ts +0 -81
  608. package/src/types/common.ts +0 -26
  609. package/src/types/config.ts +0 -220
  610. package/src/types/events.ts +0 -80
  611. package/src/types/index.ts +0 -26
  612. package/src/types/provider-settings.ts +0 -54
  613. package/src/types/session.ts +0 -111
  614. package/src/types/sessions.ts +0 -37
  615. package/src/types/storage.ts +0 -56
  616. package/src/types.ts +0 -167
  617. package/src/version.ts +0 -3
@@ -1,1081 +0,0 @@
1
- import type {
2
- AgentEvent,
3
- AgentFinishReason,
4
- AgentResult,
5
- AgentUsage,
6
- HubEventEnvelope,
7
- SessionRecord as HubSessionRecord,
8
- HubToolExecutorName,
9
- JsonValue,
10
- ToolApprovalRequest,
11
- ToolApprovalResult,
12
- ToolContext,
13
- } from "@clinebot/shared";
14
- import type { ToolExecutors } from "../extensions/tools";
15
- import type { HookEventPayload } from "../hooks";
16
- import { NodeHubClient } from "../hub/client";
17
- import type {
18
- PendingPromptMutationResult,
19
- PendingPromptsAction,
20
- PendingPromptsDeleteInput,
21
- PendingPromptsListInput,
22
- PendingPromptsUpdateInput,
23
- RuntimeHost,
24
- RuntimeHostSubscribeOptions,
25
- SendSessionInput,
26
- SessionAccumulatedUsage,
27
- StartSessionInput,
28
- StartSessionResult,
29
- } from "../runtime/runtime-host";
30
- import {
31
- type SessionManifest,
32
- SessionManifestSchema,
33
- } from "../session/session-manifest";
34
- import { SessionSource, type SessionStatus } from "../types/common";
35
- import type { CoreSessionEvent, SessionPendingPrompt } from "../types/events";
36
- import type { SessionRecord } from "../types/sessions";
37
- import { RuntimeHostEventBus } from "./runtime-host-support";
38
-
39
- function toJsonRecord(
40
- value: Record<string, unknown> | undefined,
41
- ): Record<string, JsonValue | undefined> | undefined {
42
- if (!value) {
43
- return undefined;
44
- }
45
- return JSON.parse(JSON.stringify(value)) as Record<
46
- string,
47
- JsonValue | undefined
48
- >;
49
- }
50
-
51
- function isHubToolExecutorName(value: unknown): value is HubToolExecutorName {
52
- return (
53
- value === "readFile" ||
54
- value === "search" ||
55
- value === "bash" ||
56
- value === "webFetch" ||
57
- value === "editor" ||
58
- value === "applyPatch" ||
59
- value === "skills" ||
60
- value === "askQuestion" ||
61
- value === "submit"
62
- );
63
- }
64
-
65
- function parseToolContext(value: unknown): ToolContext {
66
- const payload =
67
- value && typeof value === "object" && !Array.isArray(value)
68
- ? (value as Record<string, unknown>)
69
- : {};
70
- return {
71
- agentId: typeof payload.agentId === "string" ? payload.agentId : "",
72
- conversationId:
73
- typeof payload.conversationId === "string" ? payload.conversationId : "",
74
- iteration: typeof payload.iteration === "number" ? payload.iteration : 0,
75
- metadata:
76
- payload.metadata &&
77
- typeof payload.metadata === "object" &&
78
- !Array.isArray(payload.metadata)
79
- ? (payload.metadata as Record<string, unknown>)
80
- : undefined,
81
- };
82
- }
83
-
84
- function parseApprovalInput(value: unknown): unknown {
85
- if (typeof value !== "string") {
86
- return value;
87
- }
88
- try {
89
- return JSON.parse(value);
90
- } catch {
91
- return value;
92
- }
93
- }
94
-
95
- function isAgentFinishReason(value: unknown): value is AgentFinishReason {
96
- return (
97
- value === "completed" ||
98
- value === "max_iterations" ||
99
- value === "aborted" ||
100
- value === "mistake_limit" ||
101
- value === "error"
102
- );
103
- }
104
-
105
- function parseDoneUsage(value: unknown): AgentUsage | undefined {
106
- if (!value || typeof value !== "object" || Array.isArray(value)) {
107
- return undefined;
108
- }
109
- const payload = value as Record<string, unknown>;
110
- const inputTokens =
111
- typeof payload.inputTokens === "number" ? payload.inputTokens : undefined;
112
- const outputTokens =
113
- typeof payload.outputTokens === "number" ? payload.outputTokens : undefined;
114
- if (inputTokens === undefined || outputTokens === undefined) {
115
- return undefined;
116
- }
117
- return {
118
- inputTokens,
119
- outputTokens,
120
- cacheReadTokens:
121
- typeof payload.cacheReadTokens === "number" ? payload.cacheReadTokens : 0,
122
- cacheWriteTokens:
123
- typeof payload.cacheWriteTokens === "number"
124
- ? payload.cacheWriteTokens
125
- : 0,
126
- totalCost: typeof payload.totalCost === "number" ? payload.totalCost : 0,
127
- };
128
- }
129
-
130
- function doneEventFromPayload(
131
- payload: Record<string, unknown> | undefined,
132
- ): AgentEvent {
133
- const result =
134
- payload?.result &&
135
- typeof payload.result === "object" &&
136
- !Array.isArray(payload.result)
137
- ? (payload.result as Record<string, unknown>)
138
- : undefined;
139
- const reasonCandidate = payload?.reason ?? result?.finishReason;
140
- const reason = isAgentFinishReason(reasonCandidate)
141
- ? reasonCandidate
142
- : reasonCandidate === "failed"
143
- ? "error"
144
- : "completed";
145
- const usage = parseDoneUsage(payload?.usage ?? result?.usage);
146
- return {
147
- type: "done",
148
- reason,
149
- text:
150
- typeof payload?.text === "string"
151
- ? payload.text
152
- : typeof result?.text === "string"
153
- ? result.text
154
- : "",
155
- iterations:
156
- typeof payload?.iterations === "number"
157
- ? payload.iterations
158
- : typeof result?.iterations === "number"
159
- ? result.iterations
160
- : 0,
161
- usage,
162
- };
163
- }
164
-
165
- function hubReplyErrorMessage(
166
- reply: { error?: { message?: string } },
167
- command: string,
168
- ): string {
169
- return reply.error?.message ?? `hub command failed: ${command}`;
170
- }
171
-
172
- export interface HubRuntimeHostOptions {
173
- url: string;
174
- authToken?: string;
175
- clientType?: string;
176
- displayName?: string;
177
- requestToolApproval?: (
178
- request: ToolApprovalRequest,
179
- ) => Promise<ToolApprovalResult> | ToolApprovalResult;
180
- }
181
-
182
- function mapStatus(
183
- status: HubSessionRecord["status"] | undefined,
184
- ): SessionStatus {
185
- switch (status) {
186
- case "idle":
187
- case "completed":
188
- return "completed";
189
- case "failed":
190
- return "failed";
191
- case "aborted":
192
- return "cancelled";
193
- default:
194
- return "running";
195
- }
196
- }
197
-
198
- function toSessionRecord(session: HubSessionRecord): SessionRecord {
199
- const metadata =
200
- session.metadata && typeof session.metadata === "object"
201
- ? JSON.parse(JSON.stringify(session.metadata))
202
- : undefined;
203
- return {
204
- sessionId: session.sessionId,
205
- parentSessionId:
206
- typeof metadata?.parentSessionId === "string"
207
- ? metadata.parentSessionId
208
- : undefined,
209
- agentId:
210
- session.runtimeSession?.agentId ||
211
- (typeof metadata?.agentId === "string" ? metadata.agentId : undefined),
212
- parentAgentId:
213
- typeof metadata?.parentAgentId === "string"
214
- ? metadata.parentAgentId
215
- : undefined,
216
- conversationId:
217
- typeof metadata?.conversationId === "string"
218
- ? metadata.conversationId
219
- : undefined,
220
- isSubagent:
221
- typeof metadata?.isSubagent === "boolean" ? metadata.isSubagent : false,
222
- source:
223
- typeof metadata?.source === "string"
224
- ? metadata.source
225
- : SessionSource.CORE,
226
- pid: typeof metadata?.pid === "number" ? metadata.pid : undefined,
227
- startedAt: new Date(session.createdAt).toISOString(),
228
- endedAt:
229
- mapStatus(session.status) === "running"
230
- ? undefined
231
- : new Date(session.updatedAt).toISOString(),
232
- exitCode:
233
- mapStatus(session.status) === "completed"
234
- ? 0
235
- : mapStatus(session.status) === "failed"
236
- ? 1
237
- : undefined,
238
- status: mapStatus(session.status),
239
- interactive: metadata?.interactive === true,
240
- provider:
241
- typeof metadata?.provider === "string" ? metadata.provider : "hub",
242
- model: typeof metadata?.model === "string" ? metadata.model : "hub",
243
- cwd: session.cwd?.trim() || session.workspaceRoot,
244
- workspaceRoot: session.workspaceRoot,
245
- teamName:
246
- typeof metadata?.teamName === "string" ? metadata.teamName : undefined,
247
- enableTools:
248
- session.runtimeOptions?.enableTools ?? metadata?.enableTools === true,
249
- enableSpawn:
250
- session.runtimeOptions?.enableSpawn ?? metadata?.enableSpawn === true,
251
- enableTeams:
252
- session.runtimeOptions?.enableTeams ?? metadata?.enableTeams === true,
253
- prompt: typeof metadata?.prompt === "string" ? metadata.prompt : undefined,
254
- metadata,
255
- updatedAt: new Date(session.updatedAt).toISOString(),
256
- messagesPath:
257
- typeof metadata?.messagesPath === "string"
258
- ? metadata.messagesPath
259
- : undefined,
260
- hookPath:
261
- typeof metadata?.hookPath === "string" ? metadata.hookPath : undefined,
262
- };
263
- }
264
-
265
- function buildManifest(
266
- sessionId: string,
267
- input: StartSessionInput,
268
- session: HubSessionRecord | undefined,
269
- ): SessionManifest {
270
- const workspaceRoot =
271
- session?.workspaceRoot?.trim() ||
272
- input.config.workspaceRoot ||
273
- input.config.cwd;
274
- return SessionManifestSchema.parse({
275
- version: 1,
276
- session_id: sessionId,
277
- source: input.source ?? SessionSource.CORE,
278
- pid: process.pid,
279
- started_at: new Date(session?.createdAt ?? Date.now()).toISOString(),
280
- status: mapStatus(session?.status),
281
- interactive: input.interactive === true,
282
- provider: input.config.providerId,
283
- model: input.config.modelId,
284
- cwd: session?.cwd?.trim() || input.config.cwd,
285
- workspace_root: workspaceRoot,
286
- team_name: input.config.teamName,
287
- enable_tools: input.config.enableTools,
288
- enable_spawn: input.config.enableSpawnAgent,
289
- enable_teams: input.config.enableAgentTeams,
290
- prompt: input.prompt?.trim() || undefined,
291
- metadata:
292
- input.sessionMetadata && Object.keys(input.sessionMetadata).length > 0
293
- ? input.sessionMetadata
294
- : undefined,
295
- });
296
- }
297
-
298
- export class HubRuntimeHost implements RuntimeHost {
299
- public readonly runtimeAddress: string;
300
- private readonly client: NodeHubClient;
301
- private readonly events = new RuntimeHostEventBus();
302
- private readonly sessionToolExecutors = new Map<
303
- string,
304
- Partial<ToolExecutors>
305
- >();
306
- private readonly sessionSubscriptions = new Map<string, () => void>();
307
- private readonly pendingApprovalToolCallIds = new Set<string>();
308
- private readonly requestToolApproval:
309
- | HubRuntimeHostOptions["requestToolApproval"]
310
- | undefined;
311
-
312
- constructor(
313
- options: HubRuntimeHostOptions,
314
- clientContext?: { workspaceRoot?: string; cwd?: string },
315
- ) {
316
- this.requestToolApproval = options.requestToolApproval;
317
- this.runtimeAddress = options.url;
318
- this.client = new NodeHubClient({
319
- url: options.url,
320
- authToken: options.authToken,
321
- clientType: options.clientType ?? "core-hub-runtime",
322
- displayName: options.displayName ?? "core hub runtime",
323
- workspaceRoot: clientContext?.workspaceRoot,
324
- cwd: clientContext?.cwd,
325
- });
326
- }
327
-
328
- async connect(): Promise<void> {
329
- await this.client.connect();
330
- }
331
-
332
- async start(input: StartSessionInput): Promise<StartSessionResult> {
333
- const advertisedToolExecutors = Object.keys(
334
- input.localRuntime?.defaultToolExecutors ?? {},
335
- ).filter(isHubToolExecutorName);
336
- const reply = await this.client.command("session.create", {
337
- workspaceRoot: input.config.workspaceRoot?.trim() || input.config.cwd,
338
- cwd: input.config.cwd,
339
- sessionConfig: toJsonRecord(input.config as Record<string, unknown>),
340
- metadata: {
341
- ...(input.sessionMetadata ?? {}),
342
- source: input.source ?? SessionSource.CORE,
343
- provider: input.config.providerId,
344
- model: input.config.modelId,
345
- enableTools: input.config.enableTools,
346
- enableSpawn: input.config.enableSpawnAgent,
347
- enableTeams: input.config.enableAgentTeams,
348
- teamName: input.config.teamName,
349
- prompt: input.prompt,
350
- interactive: input.interactive === true,
351
- },
352
- runtimeOptions: {
353
- toolExecutors: advertisedToolExecutors,
354
- },
355
- toolPolicies: toJsonRecord(
356
- input.toolPolicies as Record<string, unknown> | undefined,
357
- ),
358
- initialMessages: input.initialMessages,
359
- });
360
- const session = reply.payload?.session as HubSessionRecord | undefined;
361
- const sessionId = session?.sessionId?.trim();
362
- if (!sessionId) {
363
- throw new Error("Hub runtime did not return a session id.");
364
- }
365
- if (input.localRuntime?.defaultToolExecutors) {
366
- this.sessionToolExecutors.set(
367
- sessionId,
368
- input.localRuntime.defaultToolExecutors,
369
- );
370
- }
371
- this.ensureSessionSubscription(sessionId);
372
-
373
- return {
374
- sessionId,
375
- manifest: buildManifest(sessionId, input, session),
376
- manifestPath: "",
377
- messagesPath: "",
378
- result: undefined,
379
- };
380
- }
381
-
382
- async send(input: SendSessionInput): Promise<AgentResult | undefined> {
383
- this.ensureSessionSubscription(input.sessionId);
384
- const reply = await this.client.command(
385
- "run.start",
386
- {
387
- sessionId: input.sessionId,
388
- input: input.prompt,
389
- attachments:
390
- (input.userImages?.length ?? 0) > 0 ||
391
- (input.userFiles?.length ?? 0) > 0
392
- ? {
393
- ...(input.userImages?.length
394
- ? { userImages: input.userImages }
395
- : {}),
396
- ...(input.userFiles?.length
397
- ? {
398
- userFiles: input.userFiles,
399
- }
400
- : {}),
401
- }
402
- : undefined,
403
- delivery: input.delivery,
404
- },
405
- input.sessionId,
406
- { timeoutMs: null },
407
- );
408
- return reply.payload?.result as AgentResult | undefined;
409
- }
410
-
411
- async pendingPrompts(
412
- action: "list",
413
- input: PendingPromptsListInput,
414
- ): Promise<SessionPendingPrompt[]>;
415
- async pendingPrompts(
416
- action: "update",
417
- input: PendingPromptsUpdateInput,
418
- ): Promise<PendingPromptMutationResult>;
419
- async pendingPrompts(
420
- action: "delete",
421
- input: PendingPromptsDeleteInput,
422
- ): Promise<PendingPromptMutationResult>;
423
- async pendingPrompts(
424
- action: PendingPromptsAction,
425
- input:
426
- | PendingPromptsListInput
427
- | PendingPromptsUpdateInput
428
- | PendingPromptsDeleteInput,
429
- ): Promise<SessionPendingPrompt[] | PendingPromptMutationResult> {
430
- switch (action) {
431
- case "list":
432
- return await this.listPendingPromptEntries(input);
433
- case "update":
434
- return await this.editPendingPromptEntry(
435
- input as PendingPromptsUpdateInput,
436
- );
437
- case "delete":
438
- return await this.deletePendingPromptEntry(
439
- input as PendingPromptsDeleteInput,
440
- );
441
- }
442
- }
443
-
444
- private async listPendingPromptEntries(
445
- input: PendingPromptsListInput,
446
- ): Promise<SessionPendingPrompt[]> {
447
- this.ensureSessionSubscription(input.sessionId);
448
- const reply = await this.client.command(
449
- "session.pending_prompts",
450
- { sessionId: input.sessionId },
451
- input.sessionId,
452
- );
453
- return Array.isArray(reply.payload?.prompts)
454
- ? (reply.payload.prompts as SessionPendingPrompt[])
455
- : [];
456
- }
457
-
458
- private async editPendingPromptEntry(
459
- input: PendingPromptsUpdateInput,
460
- ): Promise<PendingPromptMutationResult> {
461
- this.ensureSessionSubscription(input.sessionId);
462
- const reply = await this.client.command(
463
- "session.update_pending_prompt",
464
- { ...input },
465
- input.sessionId,
466
- );
467
- return {
468
- sessionId: input.sessionId,
469
- prompts: Array.isArray(reply.payload?.prompts)
470
- ? (reply.payload.prompts as SessionPendingPrompt[])
471
- : [],
472
- prompt: reply.payload?.prompt as SessionPendingPrompt | undefined,
473
- updated: reply.payload?.updated === true,
474
- };
475
- }
476
-
477
- private async deletePendingPromptEntry(
478
- input: PendingPromptsDeleteInput,
479
- ): Promise<PendingPromptMutationResult> {
480
- this.ensureSessionSubscription(input.sessionId);
481
- const reply = await this.client.command(
482
- "session.remove_pending_prompt",
483
- { ...input },
484
- input.sessionId,
485
- );
486
- return {
487
- sessionId: input.sessionId,
488
- prompts: Array.isArray(reply.payload?.prompts)
489
- ? (reply.payload.prompts as SessionPendingPrompt[])
490
- : [],
491
- prompt: reply.payload?.prompt as SessionPendingPrompt | undefined,
492
- removed: reply.payload?.removed === true,
493
- };
494
- }
495
-
496
- async getAccumulatedUsage(
497
- sessionId: string,
498
- ): Promise<SessionAccumulatedUsage | undefined> {
499
- const reply = await this.client.command(
500
- "session.get",
501
- undefined,
502
- sessionId,
503
- );
504
- const session = reply.payload?.session as
505
- | (HubSessionRecord & { usage?: SessionAccumulatedUsage })
506
- | undefined;
507
- return session?.usage ? { ...session.usage } : undefined;
508
- }
509
-
510
- async abort(sessionId: string, reason?: unknown): Promise<void> {
511
- await this.client.command(
512
- "run.abort",
513
- { sessionId, reason: typeof reason === "string" ? reason : undefined },
514
- sessionId,
515
- );
516
- }
517
-
518
- async stop(sessionId: string): Promise<void> {
519
- this.sessionToolExecutors.delete(sessionId);
520
- this.disposeSessionSubscription(sessionId);
521
- await this.client.command("session.detach", { sessionId }, sessionId);
522
- }
523
-
524
- async dispose(): Promise<void> {
525
- for (const [sessionId, unsubscribe] of this.sessionSubscriptions) {
526
- unsubscribe();
527
- try {
528
- await this.client.command("session.detach", { sessionId }, sessionId);
529
- } catch {
530
- // Best-effort detach during shutdown.
531
- }
532
- }
533
- this.sessionSubscriptions.clear();
534
- this.sessionToolExecutors.clear();
535
- await this.client.dispose();
536
- }
537
-
538
- async get(sessionId: string): Promise<SessionRecord | undefined> {
539
- const reply = await this.client.command(
540
- "session.get",
541
- undefined,
542
- sessionId,
543
- );
544
- const session = reply.payload?.session as HubSessionRecord | undefined;
545
- return session ? toSessionRecord(session) : undefined;
546
- }
547
-
548
- async list(limit = 100): Promise<SessionRecord[]> {
549
- const reply = await this.client.command("session.list", { limit });
550
- const sessions =
551
- (reply.payload?.sessions as HubSessionRecord[] | undefined) ?? [];
552
- return sessions.map(toSessionRecord);
553
- }
554
-
555
- async delete(sessionId: string): Promise<boolean> {
556
- this.sessionToolExecutors.delete(sessionId);
557
- this.disposeSessionSubscription(sessionId);
558
- const reply = await this.client.command("session.delete", { sessionId });
559
- return reply.payload?.deleted === true;
560
- }
561
-
562
- async update(
563
- sessionId: string,
564
- updates: {
565
- prompt?: string | null;
566
- metadata?: Record<string, unknown> | null;
567
- title?: string | null;
568
- },
569
- ): Promise<{ updated: boolean }> {
570
- const metadata: Record<string, unknown> = {
571
- ...(updates.metadata ?? {}),
572
- };
573
- if (typeof updates.prompt === "string") {
574
- metadata.prompt = updates.prompt;
575
- }
576
- if (typeof updates.title === "string") {
577
- metadata.title = updates.title;
578
- }
579
- const reply = await this.client.command("session.update", {
580
- sessionId,
581
- metadata,
582
- });
583
- return { updated: reply.ok };
584
- }
585
-
586
- async readMessages(
587
- sessionId: string,
588
- ): Promise<import("@clinebot/llms").Message[]> {
589
- const target = sessionId.trim();
590
- if (!target) {
591
- return [];
592
- }
593
- const reply = await this.client.command(
594
- "session.messages",
595
- { sessionId: target },
596
- target,
597
- );
598
- if (!reply.ok) {
599
- throw new Error(hubReplyErrorMessage(reply, "session.messages"));
600
- }
601
- const messages = reply.payload?.messages;
602
- return Array.isArray(messages)
603
- ? (messages as import("@clinebot/llms").Message[])
604
- : [];
605
- }
606
-
607
- async handleHookEvent(_payload: HookEventPayload): Promise<void> {
608
- await this.client.command("session.hook", { payload: _payload });
609
- }
610
-
611
- subscribe(
612
- listener: (event: CoreSessionEvent) => void,
613
- options?: RuntimeHostSubscribeOptions,
614
- ): () => void {
615
- return this.events.subscribe(listener, options);
616
- }
617
-
618
- private ensureSessionSubscription(sessionId: string): void {
619
- const target = sessionId.trim();
620
- if (!target || this.sessionSubscriptions.has(target)) {
621
- return;
622
- }
623
- const subscription = this.client.subscribe(
624
- (event) => {
625
- this.handleHubEvent(event);
626
- },
627
- { sessionId: target },
628
- );
629
- this.sessionSubscriptions.set(
630
- target,
631
- typeof subscription === "function" ? subscription : () => {},
632
- );
633
- }
634
-
635
- private disposeSessionSubscription(sessionId: string): void {
636
- const target = sessionId.trim();
637
- if (!target) {
638
- return;
639
- }
640
- this.sessionSubscriptions.get(target)?.();
641
- this.sessionSubscriptions.delete(target);
642
- }
643
-
644
- private emitToolCallContentStart(input: {
645
- sessionId: string;
646
- toolCallId?: string;
647
- toolName?: string;
648
- toolInput?: unknown;
649
- }): void {
650
- this.events.emit({
651
- type: "agent_event",
652
- payload: {
653
- sessionId: input.sessionId,
654
- event: {
655
- type: "content_start",
656
- contentType: "tool",
657
- toolCallId: input.toolCallId,
658
- toolName: input.toolName,
659
- input: input.toolInput,
660
- },
661
- },
662
- });
663
- }
664
-
665
- private handleHubEvent(event: HubEventEnvelope): void {
666
- const sessionId = event.sessionId?.trim();
667
- if (event.event === "capability.requested") {
668
- void this.handleCapabilityRequest(event);
669
- return;
670
- }
671
- if (event.event === "approval.requested") {
672
- void this.handleApprovalRequested(event);
673
- return;
674
- }
675
- if (!sessionId) {
676
- return;
677
- }
678
-
679
- switch (event.event) {
680
- case "iteration.started": {
681
- this.events.emit({
682
- type: "agent_event",
683
- payload: {
684
- sessionId,
685
- event: {
686
- type: "iteration_start",
687
- iteration:
688
- typeof event.payload?.iteration === "number"
689
- ? event.payload.iteration
690
- : 0,
691
- },
692
- },
693
- });
694
- return;
695
- }
696
- case "iteration.finished": {
697
- this.events.emit({
698
- type: "agent_event",
699
- payload: {
700
- sessionId,
701
- event: {
702
- type: "iteration_end",
703
- iteration:
704
- typeof event.payload?.iteration === "number"
705
- ? event.payload.iteration
706
- : 0,
707
- hadToolCalls: event.payload?.hadToolCalls === true,
708
- toolCallCount:
709
- typeof event.payload?.toolCallCount === "number"
710
- ? event.payload.toolCallCount
711
- : 0,
712
- },
713
- },
714
- });
715
- return;
716
- }
717
- case "assistant.delta": {
718
- const text =
719
- typeof event.payload?.text === "string" ? event.payload.text : "";
720
- if (!text) {
721
- return;
722
- }
723
- this.events.emit({
724
- type: "agent_event",
725
- payload: {
726
- sessionId,
727
- event: {
728
- type: "content_start",
729
- contentType: "text",
730
- text,
731
- },
732
- },
733
- });
734
- return;
735
- }
736
- case "assistant.finished": {
737
- this.events.emit({
738
- type: "agent_event",
739
- payload: {
740
- sessionId,
741
- event: {
742
- type: "content_end",
743
- contentType: "text",
744
- text:
745
- typeof event.payload?.text === "string"
746
- ? event.payload.text
747
- : undefined,
748
- },
749
- },
750
- });
751
- return;
752
- }
753
- case "reasoning.delta": {
754
- const text =
755
- typeof event.payload?.text === "string" ? event.payload.text : "";
756
- const redacted = event.payload?.redacted === true;
757
- if (!text && !redacted) {
758
- return;
759
- }
760
- this.events.emit({
761
- type: "agent_event",
762
- payload: {
763
- sessionId,
764
- event: {
765
- type: "content_start",
766
- contentType: "reasoning",
767
- reasoning: text,
768
- redacted,
769
- },
770
- },
771
- });
772
- return;
773
- }
774
- case "reasoning.finished": {
775
- this.events.emit({
776
- type: "agent_event",
777
- payload: {
778
- sessionId,
779
- event: {
780
- type: "content_end",
781
- contentType: "reasoning",
782
- reasoning:
783
- typeof event.payload?.reasoning === "string"
784
- ? event.payload.reasoning
785
- : undefined,
786
- },
787
- },
788
- });
789
- return;
790
- }
791
- case "agent.done": {
792
- this.events.emit({
793
- type: "agent_event",
794
- payload: {
795
- sessionId,
796
- event: doneEventFromPayload(event.payload),
797
- },
798
- });
799
- return;
800
- }
801
- case "tool.started": {
802
- const toolCallId =
803
- typeof event.payload?.toolCallId === "string"
804
- ? event.payload.toolCallId
805
- : undefined;
806
- if (toolCallId && this.pendingApprovalToolCallIds.delete(toolCallId)) {
807
- return;
808
- }
809
- this.emitToolCallContentStart({
810
- sessionId,
811
- toolCallId,
812
- toolName:
813
- typeof event.payload?.toolName === "string"
814
- ? event.payload.toolName
815
- : undefined,
816
- toolInput: event.payload?.input,
817
- });
818
- return;
819
- }
820
- case "tool.finished": {
821
- const toolCallId =
822
- typeof event.payload?.toolCallId === "string"
823
- ? event.payload.toolCallId
824
- : undefined;
825
- if (toolCallId) {
826
- this.pendingApprovalToolCallIds.delete(toolCallId);
827
- }
828
- this.events.emit({
829
- type: "agent_event",
830
- payload: {
831
- sessionId,
832
- event: {
833
- type: "content_end",
834
- contentType: "tool",
835
- toolCallId,
836
- toolName:
837
- typeof event.payload?.toolName === "string"
838
- ? event.payload.toolName
839
- : undefined,
840
- output: event.payload?.output,
841
- error:
842
- typeof event.payload?.error === "string"
843
- ? event.payload.error
844
- : undefined,
845
- },
846
- },
847
- });
848
- return;
849
- }
850
- case "run.started":
851
- case "session.created":
852
- case "session.updated":
853
- case "session.attached":
854
- case "session.detached": {
855
- const session = event.payload?.session as HubSessionRecord | undefined;
856
- this.events.emit({
857
- type: "status",
858
- payload: {
859
- sessionId,
860
- status: session?.status ?? "running",
861
- },
862
- });
863
- return;
864
- }
865
- case "session.pending_prompts": {
866
- this.events.emit({
867
- type: "pending_prompts",
868
- payload: {
869
- sessionId,
870
- prompts: Array.isArray(event.payload?.prompts)
871
- ? (event.payload.prompts as SessionPendingPrompt[])
872
- : [],
873
- },
874
- });
875
- return;
876
- }
877
- case "session.pending_prompt_submitted": {
878
- const prompt = event.payload?.prompt as
879
- | SessionPendingPrompt
880
- | undefined;
881
- if (!prompt) {
882
- return;
883
- }
884
- this.events.emit({
885
- type: "pending_prompt_submitted",
886
- payload: {
887
- sessionId,
888
- id: prompt.id,
889
- prompt: prompt.prompt,
890
- delivery: prompt.delivery,
891
- attachmentCount: prompt.attachmentCount,
892
- },
893
- });
894
- return;
895
- }
896
- case "run.completed":
897
- case "run.aborted": {
898
- this.sessionToolExecutors.delete(sessionId);
899
- this.events.emit({
900
- type: "agent_event",
901
- payload: {
902
- sessionId,
903
- event: doneEventFromPayload({
904
- ...event.payload,
905
- reason:
906
- typeof event.payload?.reason === "string"
907
- ? event.payload.reason
908
- : event.event === "run.aborted"
909
- ? "aborted"
910
- : "completed",
911
- }),
912
- },
913
- });
914
- this.events.emit({
915
- type: "ended",
916
- payload: {
917
- sessionId,
918
- reason:
919
- typeof event.payload?.reason === "string"
920
- ? event.payload.reason
921
- : event.event === "run.aborted"
922
- ? "aborted"
923
- : "completed",
924
- ts: event.timestamp ?? Date.now(),
925
- },
926
- });
927
- return;
928
- }
929
- default:
930
- return;
931
- }
932
- }
933
-
934
- private async handleCapabilityRequest(
935
- event: HubEventEnvelope,
936
- ): Promise<void> {
937
- const sessionId = event.sessionId?.trim();
938
- if (!sessionId) {
939
- return;
940
- }
941
- const targetClientId =
942
- typeof event.payload?.targetClientId === "string"
943
- ? event.payload.targetClientId
944
- : undefined;
945
- if (targetClientId && targetClientId !== this.client.getClientId()) {
946
- return;
947
- }
948
- const requestId =
949
- typeof event.payload?.requestId === "string"
950
- ? event.payload.requestId
951
- : "";
952
- const capabilityName =
953
- typeof event.payload?.capabilityName === "string"
954
- ? event.payload.capabilityName
955
- : "";
956
- if (!requestId || !capabilityName.startsWith("tool_executor.")) {
957
- return;
958
- }
959
- const executorName = capabilityName.slice("tool_executor.".length);
960
- const executors = this.sessionToolExecutors.get(sessionId);
961
- const executor = executors?.[executorName as keyof ToolExecutors] as
962
- | ((...args: unknown[]) => Promise<unknown>)
963
- | undefined;
964
- if (typeof executor !== "function") {
965
- await this.client.command(
966
- "capability.respond",
967
- {
968
- requestId,
969
- ok: false,
970
- error: `No executor registered for ${executorName}`,
971
- },
972
- sessionId,
973
- );
974
- return;
975
- }
976
- const payload =
977
- event.payload?.payload &&
978
- typeof event.payload.payload === "object" &&
979
- !Array.isArray(event.payload.payload)
980
- ? (event.payload.payload as Record<string, unknown>)
981
- : {};
982
- const args = Array.isArray(payload.args) ? [...payload.args] : [];
983
- const context = parseToolContext(payload.context);
984
- try {
985
- const result = await executor(...args, context);
986
- await this.client.command(
987
- "capability.respond",
988
- {
989
- requestId,
990
- ok: true,
991
- payload: { result },
992
- },
993
- sessionId,
994
- );
995
- } catch (error) {
996
- await this.client.command(
997
- "capability.respond",
998
- {
999
- requestId,
1000
- ok: false,
1001
- error: error instanceof Error ? error.message : String(error),
1002
- },
1003
- sessionId,
1004
- );
1005
- }
1006
- }
1007
-
1008
- private async handleApprovalRequested(
1009
- event: HubEventEnvelope,
1010
- ): Promise<void> {
1011
- const sessionId = event.sessionId?.trim();
1012
- if (!sessionId || !this.requestToolApproval) {
1013
- return;
1014
- }
1015
- const approvalId =
1016
- typeof event.payload?.approvalId === "string"
1017
- ? event.payload.approvalId.trim()
1018
- : "";
1019
- const toolCallId =
1020
- typeof event.payload?.toolCallId === "string"
1021
- ? event.payload.toolCallId
1022
- : "";
1023
- const toolName =
1024
- typeof event.payload?.toolName === "string" ? event.payload.toolName : "";
1025
- if (!approvalId || !toolCallId || !toolName) {
1026
- return;
1027
- }
1028
- const policy =
1029
- event.payload?.policy &&
1030
- typeof event.payload.policy === "object" &&
1031
- !Array.isArray(event.payload.policy)
1032
- ? (event.payload.policy as ToolApprovalRequest["policy"])
1033
- : { autoApprove: false };
1034
- const input = parseApprovalInput(event.payload?.inputJson);
1035
- this.pendingApprovalToolCallIds.add(toolCallId);
1036
- this.emitToolCallContentStart({
1037
- sessionId,
1038
- toolCallId,
1039
- toolName,
1040
- toolInput: input,
1041
- });
1042
- const result = await Promise.resolve(
1043
- this.requestToolApproval({
1044
- sessionId,
1045
- agentId:
1046
- typeof event.payload?.agentId === "string"
1047
- ? event.payload.agentId
1048
- : "",
1049
- conversationId:
1050
- typeof event.payload?.conversationId === "string"
1051
- ? event.payload.conversationId
1052
- : sessionId,
1053
- iteration:
1054
- typeof event.payload?.iteration === "number"
1055
- ? event.payload.iteration
1056
- : 0,
1057
- toolCallId,
1058
- toolName,
1059
- input,
1060
- policy,
1061
- }),
1062
- ).catch((error) => ({
1063
- approved: false,
1064
- reason:
1065
- error instanceof Error
1066
- ? error.message
1067
- : `Tool approval request failed: ${String(error)}`,
1068
- }));
1069
- await this.client
1070
- .command(
1071
- "approval.respond",
1072
- {
1073
- approvalId,
1074
- approved: result.approved,
1075
- reason: result.reason,
1076
- },
1077
- sessionId,
1078
- )
1079
- .catch(() => {});
1080
- }
1081
- }