@xopcai/xopc 0.0.6 → 0.0.8

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 (291) hide show
  1. package/dist/extensions/telegram/src/plugin.js +1 -1
  2. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  3. package/dist/extensions/weixin/src/api/api.js +1 -1
  4. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  5. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  6. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  7. package/dist/extensions/weixin/src/plugin.js +1 -1
  8. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js → agents-BSNzJWbQ.js} +2 -2
  9. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js.map → agents-BSNzJWbQ.js.map} +1 -1
  10. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js → apps-page-BKk9SB4D.js} +2 -2
  11. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js.map → apps-page-BKk9SB4D.js.map} +1 -1
  12. package/dist/gateway/static/root/assets/attachment-load-DXcJLSWT.js +1 -0
  13. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js → channels-settings-_J6cQN6G.js} +2 -2
  14. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js.map → channels-settings-_J6cQN6G.js.map} +1 -1
  15. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js → chat-agents-api-DPb_0O8M.js} +2 -2
  16. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js.map → chat-agents-api-DPb_0O8M.js.map} +1 -1
  17. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js → cron-page-BUJOuuKX.js} +2 -2
  18. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js.map → cron-page-BUJOuuKX.js.map} +1 -1
  19. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js → cron-utils-Cn0YVg8x.js} +2 -2
  20. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js.map → cron-utils-Cn0YVg8x.js.map} +1 -1
  21. package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js +2 -0
  22. package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js.map +1 -0
  23. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js → extension-debug-page-DTz4O5Ua.js} +2 -2
  24. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js.map → extension-debug-page-DTz4O5Ua.js.map} +1 -1
  25. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js → extension-iframe-host-Cs1Kde9o.js} +2 -2
  26. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js.map → extension-iframe-host-Cs1Kde9o.js.map} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js → extension-page-G52iX0Bo.js} +2 -2
  28. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js.map → extension-page-G52iX0Bo.js.map} +1 -1
  29. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js → extension-provider-CO2jxBA9.js} +2 -2
  30. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js.map → extension-provider-CO2jxBA9.js.map} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js → extension-settings-page-D9Ul8uSt.js} +2 -2
  32. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js.map → extension-settings-page-D9Ul8uSt.js.map} +1 -1
  33. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js → gateway-config-swr-Bc8SVD15.js} +2 -2
  34. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js.map → gateway-config-swr-Bc8SVD15.js.map} +1 -1
  35. package/dist/gateway/static/root/assets/index-BXUJbteW.js +16 -0
  36. package/dist/gateway/static/root/assets/index-BXUJbteW.js.map +1 -0
  37. package/dist/gateway/static/root/assets/index-CQLMxWSA.css +2 -0
  38. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js → logs-page-5V25JkQY.js} +2 -2
  39. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-5V25JkQY.js.map} +1 -1
  40. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-he3aQfme.js} +2 -2
  41. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js.map → model-selector-he3aQfme.js.map} +1 -1
  42. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js +2 -0
  43. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js.map +1 -0
  44. package/dist/gateway/static/root/assets/page-header-store-DJHD9Ean.js +2 -0
  45. package/dist/gateway/static/root/assets/{page-header-store-HcRZK5CZ.js.map → page-header-store-DJHD9Ean.js.map} +1 -1
  46. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js → session-api-n-4O5d9U.js} +2 -2
  47. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js.map → session-api-n-4O5d9U.js.map} +1 -1
  48. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js → session-working-directory-control-B6dHLvbr.js} +3 -3
  49. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js.map → session-working-directory-control-B6dHLvbr.js.map} +1 -1
  50. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js → sessions-page-rBUfTdm3.js} +2 -2
  51. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js.map → sessions-page-rBUfTdm3.js.map} +1 -1
  52. package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js +2 -0
  53. package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js.map +1 -0
  54. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js → skill-api-vxtE8kI6.js} +2 -2
  55. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js.map → skill-api-vxtE8kI6.js.map} +1 -1
  56. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js → skills-page-D36_O2Ub.js} +2 -2
  57. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js.map → skills-page-D36_O2Ub.js.map} +1 -1
  58. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js → theme-store-CmiSsYBd.js} +2 -2
  59. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js.map → theme-store-CmiSsYBd.js.map} +1 -1
  60. package/dist/gateway/static/root/assets/url-CtSqjF9J.js +2 -0
  61. package/dist/gateway/static/root/assets/url-CtSqjF9J.js.map +1 -0
  62. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js → useTranslation-DYORQ7x6.js} +2 -2
  63. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js.map → useTranslation-DYORQ7x6.js.map} +1 -1
  64. package/dist/gateway/static/root/index.html +16 -16
  65. package/dist/package.js +1 -1
  66. package/dist/src/agent/agent-manager.js +4 -4
  67. package/dist/src/agent/context/workspace-seed.js +2 -2
  68. package/dist/src/agent/image/index.d.ts +0 -1
  69. package/dist/src/agent/image/index.js +1 -2
  70. package/dist/src/agent/ipc/bus.js +1 -1
  71. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  72. package/dist/src/agent/models/manager.js +1 -1
  73. package/dist/src/agent/prompt/service-prompt-builder.js +1 -1
  74. package/dist/src/agent/service.js +3 -3
  75. package/dist/src/agent/skills/hub-hash.js +1 -1
  76. package/dist/src/agent/skills/hub-pull.js +1 -1
  77. package/dist/src/agent/skills/index.js +1 -1
  78. package/dist/src/agent/skills/skill-manager.js +1 -1
  79. package/dist/src/agent/tools/browser/tools.js +2 -2
  80. package/dist/src/agent/tools/browser/tools.js.map +1 -1
  81. package/dist/src/agent/tools/factory.js +1 -1
  82. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  83. package/dist/src/agent/tools/image-tool.js +2 -2
  84. package/dist/src/agent/tools/image-tool.js.map +1 -1
  85. package/dist/src/agent/tools/index.d.ts +1 -1
  86. package/dist/src/agent/tools/index.js +2 -2
  87. package/dist/src/agent/tools/read.d.ts +0 -2
  88. package/dist/src/agent/tools/read.js +1 -3
  89. package/dist/src/agent/tools/read.js.map +1 -1
  90. package/dist/src/agent/tools/send-media.js +1 -1
  91. package/dist/src/auth/sync-provider-auth.js +1 -1
  92. package/dist/src/channels/plugin-types.d.ts +14 -0
  93. package/dist/src/cli/commands/agent.js +1 -1
  94. package/dist/src/cli/commands/doctor/checks/channel-config.d.ts +2 -0
  95. package/dist/src/cli/commands/doctor/checks/channel-config.js +113 -0
  96. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -0
  97. package/dist/src/cli/commands/doctor/checks/channel-plugins.d.ts +2 -0
  98. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +47 -0
  99. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -0
  100. package/dist/src/cli/commands/doctor/checks/config-health.d.ts +2 -0
  101. package/dist/src/cli/commands/doctor/checks/config-health.js +82 -0
  102. package/dist/src/cli/commands/doctor/checks/config-health.js.map +1 -0
  103. package/dist/src/cli/commands/doctor/checks/cron-health.d.ts +2 -0
  104. package/dist/src/cli/commands/doctor/checks/cron-health.js +116 -0
  105. package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -0
  106. package/dist/src/cli/commands/doctor/checks/gateway-health.d.ts +2 -0
  107. package/dist/src/cli/commands/doctor/checks/gateway-health.js +64 -0
  108. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +1 -0
  109. package/dist/src/cli/commands/doctor/checks/gateway-service.d.ts +2 -0
  110. package/dist/src/cli/commands/doctor/checks/gateway-service.js +64 -0
  111. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +1 -0
  112. package/dist/src/cli/commands/doctor/checks/node-version.d.ts +2 -0
  113. package/dist/src/cli/commands/doctor/checks/node-version.js +33 -0
  114. package/dist/src/cli/commands/doctor/checks/node-version.js.map +1 -0
  115. package/dist/src/cli/commands/doctor/checks/provider-auth.d.ts +2 -0
  116. package/dist/src/cli/commands/doctor/checks/provider-auth.js +91 -0
  117. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -0
  118. package/dist/src/cli/commands/doctor/checks/security-audit.d.ts +2 -0
  119. package/dist/src/cli/commands/doctor/checks/security-audit.js +85 -0
  120. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +1 -0
  121. package/dist/src/cli/commands/doctor/checks/session-integrity.d.ts +2 -0
  122. package/dist/src/cli/commands/doctor/checks/session-integrity.js +118 -0
  123. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -0
  124. package/dist/src/cli/commands/doctor/checks/state-integrity.d.ts +2 -0
  125. package/dist/src/cli/commands/doctor/checks/state-integrity.js +99 -0
  126. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +1 -0
  127. package/dist/src/cli/commands/doctor/checks/version-check.d.ts +2 -0
  128. package/dist/src/cli/commands/doctor/checks/version-check.js +71 -0
  129. package/dist/src/cli/commands/doctor/checks/version-check.js.map +1 -0
  130. package/dist/src/cli/commands/doctor/checks/workspace-status.d.ts +2 -0
  131. package/dist/src/cli/commands/doctor/checks/workspace-status.js +73 -0
  132. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -0
  133. package/dist/src/cli/commands/doctor/flow.d.ts +9 -0
  134. package/dist/src/cli/commands/doctor/flow.js +51 -0
  135. package/dist/src/cli/commands/doctor/flow.js.map +1 -0
  136. package/dist/src/cli/commands/doctor/format.d.ts +6 -0
  137. package/dist/src/cli/commands/doctor/format.js +61 -0
  138. package/dist/src/cli/commands/doctor/format.js.map +1 -0
  139. package/dist/src/cli/commands/doctor/index.js +44 -0
  140. package/dist/src/cli/commands/doctor/index.js.map +1 -0
  141. package/dist/src/cli/commands/doctor/types.d.ts +20 -0
  142. package/dist/src/cli/commands/doctor/types.js +1 -0
  143. package/dist/src/cli/commands/init.js +2 -2
  144. package/dist/src/cli/index.d.ts +1 -1
  145. package/dist/src/cli/index.js +1 -1
  146. package/dist/src/cli/index.js.map +1 -1
  147. package/dist/src/cli/utils/init-workspace.js +1 -1
  148. package/dist/src/config/index.js +3 -3
  149. package/dist/src/config/loader.js +1 -1
  150. package/dist/src/config/models-json.d.ts +15 -15
  151. package/dist/src/config/models-json.js +1 -1
  152. package/dist/src/config/profile.js +1 -1
  153. package/dist/src/config/schema.d.ts +0 -105
  154. package/dist/src/config/schema.js +3 -40
  155. package/dist/src/config/schema.js.map +1 -1
  156. package/dist/src/cron/executor.js +2 -2
  157. package/dist/src/daemon/launchd.js +2 -2
  158. package/dist/src/daemon/launchd.js.map +1 -1
  159. package/dist/src/daemon/systemd.js +2 -2
  160. package/dist/src/daemon/systemd.js.map +1 -1
  161. package/dist/src/extensions/loader.js +1 -1
  162. package/dist/src/gateway/agents-admin.js +1 -1
  163. package/dist/src/gateway/hono/lib/static-ui.js +1 -1
  164. package/dist/src/gateway/hono/routes/doctor.d.ts +3 -0
  165. package/dist/src/gateway/hono/routes/doctor.js +35 -0
  166. package/dist/src/gateway/hono/routes/doctor.js.map +1 -0
  167. package/dist/src/gateway/hono/routes/index.js +2 -0
  168. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  169. package/dist/src/gateway/hono/routes/workspace.js +2 -2
  170. package/dist/src/gateway/hono/sse.js +2 -2
  171. package/dist/src/gateway/lock.js +1 -1
  172. package/dist/src/gateway/ports.js +98 -3
  173. package/dist/src/gateway/ports.js.map +1 -1
  174. package/dist/src/gateway/service.d.ts +0 -4
  175. package/dist/src/gateway/service.js +4 -23
  176. package/dist/src/gateway/service.js.map +1 -1
  177. package/dist/src/routing/bindings.js +1 -1
  178. package/dist/src/routing/index.d.ts +1 -1
  179. package/dist/src/routing/index.js +2 -2
  180. package/dist/src/routing/index.js.map +1 -1
  181. package/dist/src/routing/resolve-route.js +1 -1
  182. package/dist/src/routing/session-key.d.ts +0 -5
  183. package/dist/src/routing/session-key.js +1 -27
  184. package/dist/src/routing/session-key.js.map +1 -1
  185. package/dist/src/session/session-title.js +1 -1
  186. package/dist/src/session/store.js +2 -6
  187. package/dist/src/session/store.js.map +1 -1
  188. package/dist/src/session/types.d.ts +0 -10
  189. package/dist/src/session/types.js.map +1 -1
  190. package/package.json +1 -2
  191. package/dist/gateway/static/root/assets/attachment-load-6pRlDPZ8.js +0 -1
  192. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js +0 -16
  193. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js.map +0 -1
  194. package/dist/gateway/static/root/assets/index-KsVMH-Jo.css +0 -2
  195. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js +0 -2
  196. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js.map +0 -1
  197. package/dist/gateway/static/root/assets/page-header-store-HcRZK5CZ.js +0 -2
  198. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js +0 -2
  199. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js.map +0 -1
  200. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js +0 -2
  201. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js.map +0 -1
  202. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js +0 -2
  203. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js.map +0 -1
  204. package/dist/src/acp/commands.d.ts +0 -11
  205. package/dist/src/acp/commands.js +0 -17
  206. package/dist/src/acp/commands.js.map +0 -1
  207. package/dist/src/acp/control-plane/identity-reconcile.d.ts +0 -36
  208. package/dist/src/acp/control-plane/identity-reconcile.js +0 -124
  209. package/dist/src/acp/control-plane/identity-reconcile.js.map +0 -1
  210. package/dist/src/acp/control-plane/index.d.ts +0 -10
  211. package/dist/src/acp/control-plane/index.js +0 -6
  212. package/dist/src/acp/control-plane/manager.d.ts +0 -86
  213. package/dist/src/acp/control-plane/manager.js +0 -502
  214. package/dist/src/acp/control-plane/manager.js.map +0 -1
  215. package/dist/src/acp/control-plane/manager.types.d.ts +0 -125
  216. package/dist/src/acp/control-plane/manager.types.js +0 -14
  217. package/dist/src/acp/control-plane/manager.types.js.map +0 -1
  218. package/dist/src/acp/control-plane/manager.utils.d.ts +0 -29
  219. package/dist/src/acp/control-plane/manager.utils.js +0 -46
  220. package/dist/src/acp/control-plane/manager.utils.js.map +0 -1
  221. package/dist/src/acp/control-plane/runtime-cache-manager.d.ts +0 -49
  222. package/dist/src/acp/control-plane/runtime-cache-manager.js +0 -155
  223. package/dist/src/acp/control-plane/runtime-cache-manager.js.map +0 -1
  224. package/dist/src/acp/control-plane/runtime-cache.d.ts +0 -45
  225. package/dist/src/acp/control-plane/runtime-cache.js +0 -58
  226. package/dist/src/acp/control-plane/runtime-cache.js.map +0 -1
  227. package/dist/src/acp/control-plane/runtime-options.d.ts +0 -30
  228. package/dist/src/acp/control-plane/runtime-options.js +0 -92
  229. package/dist/src/acp/control-plane/runtime-options.js.map +0 -1
  230. package/dist/src/acp/control-plane/session-actor-queue.d.ts +0 -22
  231. package/dist/src/acp/control-plane/session-actor-queue.js +0 -70
  232. package/dist/src/acp/control-plane/session-actor-queue.js.map +0 -1
  233. package/dist/src/acp/control-plane/session-lifecycle-manager.d.ts +0 -59
  234. package/dist/src/acp/control-plane/session-lifecycle-manager.js +0 -209
  235. package/dist/src/acp/control-plane/session-lifecycle-manager.js.map +0 -1
  236. package/dist/src/acp/control-plane/session-store.d.ts +0 -39
  237. package/dist/src/acp/control-plane/session-store.js +0 -149
  238. package/dist/src/acp/control-plane/session-store.js.map +0 -1
  239. package/dist/src/acp/control-plane/turn-manager.d.ts +0 -40
  240. package/dist/src/acp/control-plane/turn-manager.js +0 -134
  241. package/dist/src/acp/control-plane/turn-manager.js.map +0 -1
  242. package/dist/src/acp/event-mapper.d.ts +0 -48
  243. package/dist/src/acp/event-mapper.js +0 -94
  244. package/dist/src/acp/event-mapper.js.map +0 -1
  245. package/dist/src/acp/index.d.ts +0 -10
  246. package/dist/src/acp/index.js +0 -5
  247. package/dist/src/acp/meta.d.ts +0 -15
  248. package/dist/src/acp/meta.js +0 -36
  249. package/dist/src/acp/meta.js.map +0 -1
  250. package/dist/src/acp/routing-integration.d.ts +0 -37
  251. package/dist/src/acp/routing-integration.js +0 -58
  252. package/dist/src/acp/routing-integration.js.map +0 -1
  253. package/dist/src/acp/runtime/backends/index.d.ts +0 -4
  254. package/dist/src/acp/runtime/backends/index.js +0 -2
  255. package/dist/src/acp/runtime/backends/local.d.ts +0 -136
  256. package/dist/src/acp/runtime/backends/local.js +0 -603
  257. package/dist/src/acp/runtime/backends/local.js.map +0 -1
  258. package/dist/src/acp/runtime/error-text.d.ts +0 -16
  259. package/dist/src/acp/runtime/error-text.js +0 -40
  260. package/dist/src/acp/runtime/error-text.js.map +0 -1
  261. package/dist/src/acp/runtime/errors.d.ts +0 -31
  262. package/dist/src/acp/runtime/errors.js +0 -47
  263. package/dist/src/acp/runtime/errors.js.map +0 -1
  264. package/dist/src/acp/runtime/index.d.ts +0 -7
  265. package/dist/src/acp/runtime/index.js +0 -4
  266. package/dist/src/acp/runtime/registry.d.ts +0 -35
  267. package/dist/src/acp/runtime/registry.js +0 -85
  268. package/dist/src/acp/runtime/registry.js.map +0 -1
  269. package/dist/src/acp/runtime/session-identity.d.ts +0 -35
  270. package/dist/src/acp/runtime/session-identity.js +0 -134
  271. package/dist/src/acp/runtime/session-identity.js.map +0 -1
  272. package/dist/src/acp/runtime/types.d.ts +0 -214
  273. package/dist/src/acp/secret-file.d.ts +0 -7
  274. package/dist/src/acp/secret-file.js +0 -19
  275. package/dist/src/acp/secret-file.js.map +0 -1
  276. package/dist/src/acp/server.d.ts +0 -48
  277. package/dist/src/acp/server.js +0 -300
  278. package/dist/src/acp/server.js.map +0 -1
  279. package/dist/src/acp/session.d.ts +0 -29
  280. package/dist/src/acp/session.js +0 -30
  281. package/dist/src/acp/session.js.map +0 -1
  282. package/dist/src/acp/types.d.ts +0 -39
  283. package/dist/src/acp/types.js +0 -13
  284. package/dist/src/acp/types.js.map +0 -1
  285. package/dist/src/agent/image/describe-images.d.ts +0 -18
  286. package/dist/src/agent/image/describe-images.js +0 -19
  287. package/dist/src/agent/image/describe-images.js.map +0 -1
  288. package/dist/src/cli/commands/acp.d.ts +0 -4
  289. package/dist/src/cli/commands/acp.js +0 -200
  290. package/dist/src/cli/commands/acp.js.map +0 -1
  291. /package/dist/src/{acp/runtime/types.js → cli/commands/doctor/index.d.ts} +0 -0
@@ -1,125 +0,0 @@
1
- /**
2
- * ACP Control Plane Types
3
- *
4
- * Type definitions for ACP session management.
5
- */
6
- import type { Config } from "../../config/schema.js";
7
- import type { AcpRuntime, AcpRuntimeHandle, AcpRuntimeSessionMode, AcpRuntimeEvent, AcpRuntimeTurnAttachment, AcpRuntimePromptMode, SessionAcpMeta, SessionIdentity, AcpSessionResolution, AcpSessionRuntimeOptions, AcpSessionStatus } from "../runtime/types.js";
8
- export type { SessionAcpMeta, SessionIdentity, AcpSessionResolution, AcpSessionRuntimeOptions, AcpSessionStatus, };
9
- /** Session entry (minimal shape to avoid cyclic imports) */
10
- export type SessionEntry = {
11
- sessionId?: string;
12
- sessionKey?: string;
13
- acp?: SessionAcpMeta;
14
- [key: string]: unknown;
15
- };
16
- /** ACP Initialize Session Input */
17
- export type AcpInitializeSessionInput = {
18
- cfg: Config;
19
- sessionKey: string;
20
- agent: string;
21
- mode: AcpRuntimeSessionMode;
22
- resumeSessionId?: string;
23
- cwd?: string;
24
- backendId?: string;
25
- };
26
- /** ACP Run Turn Input */
27
- export type AcpRunTurnInput = {
28
- cfg: Config;
29
- sessionKey: string;
30
- text: string;
31
- attachments?: AcpRuntimeTurnAttachment[];
32
- mode: AcpRuntimePromptMode;
33
- requestId: string;
34
- signal?: AbortSignal;
35
- onEvent?: (event: AcpRuntimeEvent) => Promise<void> | void;
36
- };
37
- /** ACP Close Session Input */
38
- export type AcpCloseSessionInput = {
39
- cfg: Config;
40
- sessionKey: string;
41
- reason: string;
42
- requireAcpSession?: boolean;
43
- clearMeta?: boolean;
44
- allowBackendUnavailable?: boolean;
45
- };
46
- /** ACP Close Session Result */
47
- export type AcpCloseSessionResult = {
48
- runtimeClosed: boolean;
49
- runtimeNotice?: string;
50
- metaCleared: boolean;
51
- };
52
- /** Active Turn State */
53
- export type ActiveTurnState = {
54
- runtime: AcpRuntime;
55
- handle: AcpRuntimeHandle;
56
- abortController: AbortController;
57
- cancelPromise?: Promise<void>;
58
- };
59
- /** Turn Latency Stats */
60
- export type TurnLatencyStats = {
61
- completed: number;
62
- failed: number;
63
- totalMs: number;
64
- maxMs: number;
65
- };
66
- /** ACP Manager Observability Snapshot */
67
- export type AcpManagerObservabilitySnapshot = {
68
- runtimeCache: {
69
- activeSessions: number;
70
- idleTtlMs: number;
71
- evictedTotal: number;
72
- lastEvictedAt?: number;
73
- };
74
- turns: {
75
- active: number;
76
- queueDepth: number;
77
- completed: number;
78
- failed: number;
79
- averageLatencyMs: number;
80
- maxLatencyMs: number;
81
- };
82
- errorsByCode: Record<string, number>;
83
- };
84
- /** ACP Startup Identity Reconcile Result */
85
- export type AcpStartupIdentityReconcileResult = {
86
- checked: number;
87
- resolved: number;
88
- failed: number;
89
- };
90
- /** Session ACP Meta with Entry */
91
- export type SessionEntryWithAcp = SessionEntry & {
92
- acp: SessionAcpMeta;
93
- };
94
- /** ACP Session Manager Dependencies */
95
- export type AcpSessionManagerDeps = {
96
- requireRuntimeBackend: (id?: string) => {
97
- id: string;
98
- runtime: AcpRuntime;
99
- };
100
- readSessionEntry: (params: {
101
- cfg: Config;
102
- sessionKey: string;
103
- }) => SessionEntry | undefined;
104
- upsertSessionMeta: (params: {
105
- cfg: Config;
106
- sessionKey: string;
107
- mutate: (current: SessionAcpMeta | undefined, entry: SessionEntry | undefined) => SessionAcpMeta | null | undefined;
108
- }) => Promise<SessionEntry | null>;
109
- listAcpSessions: (params: {
110
- cfg: Config;
111
- }) => Promise<SessionEntry[]>;
112
- };
113
- /** Cached Runtime State */
114
- export type CachedRuntimeState = {
115
- runtime: AcpRuntime;
116
- handle: AcpRuntimeHandle;
117
- backend: string;
118
- agent: string;
119
- mode: AcpRuntimeSessionMode;
120
- cwd?: string;
121
- appliedControlSignature?: string;
122
- lastTouchedAt: number;
123
- };
124
- /** Default Dependencies (will be implemented in manager.ts) */
125
- export declare const DEFAULT_DEPS: AcpSessionManagerDeps;
@@ -1,14 +0,0 @@
1
- //#region src/acp/control-plane/manager.types.ts
2
- /** Default Dependencies (will be implemented in manager.ts) */
3
- const DEFAULT_DEPS = {
4
- requireRuntimeBackend: () => {
5
- throw new Error("ACP runtime backend not configured");
6
- },
7
- readSessionEntry: () => void 0,
8
- upsertSessionMeta: async () => null,
9
- listAcpSessions: async () => []
10
- };
11
- //#endregion
12
- export { DEFAULT_DEPS };
13
-
14
- //# sourceMappingURL=manager.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.types.js","names":[],"sources":["../../../../src/acp/control-plane/manager.types.ts"],"sourcesContent":["/**\n * ACP Control Plane Types\n * \n * Type definitions for ACP session management.\n */\n\nimport type { Config } from \"../../config/schema.js\";\nimport type {\n AcpRuntime,\n AcpRuntimeHandle,\n AcpRuntimeSessionMode,\n AcpRuntimeEvent,\n AcpRuntimeTurnAttachment,\n AcpRuntimePromptMode,\n SessionAcpMeta,\n SessionIdentity,\n AcpSessionResolution,\n AcpSessionRuntimeOptions,\n AcpSessionStatus,\n} from \"../runtime/types.js\";\n\n// Re-export types from runtime for convenience\nexport type {\n SessionAcpMeta,\n SessionIdentity,\n AcpSessionResolution,\n AcpSessionRuntimeOptions,\n AcpSessionStatus,\n};\n\n/** Session entry (minimal shape to avoid cyclic imports) */\nexport type SessionEntry = {\n sessionId?: string;\n sessionKey?: string;\n acp?: SessionAcpMeta;\n [key: string]: unknown;\n};\n\n/** ACP Initialize Session Input */\nexport type AcpInitializeSessionInput = {\n cfg: Config;\n sessionKey: string;\n agent: string;\n mode: AcpRuntimeSessionMode;\n resumeSessionId?: string;\n cwd?: string;\n backendId?: string;\n};\n\n/** ACP Run Turn Input */\nexport type AcpRunTurnInput = {\n cfg: Config;\n sessionKey: string;\n text: string;\n attachments?: AcpRuntimeTurnAttachment[];\n mode: AcpRuntimePromptMode;\n requestId: string;\n signal?: AbortSignal;\n onEvent?: (event: AcpRuntimeEvent) => Promise<void> | void;\n};\n\n/** ACP Close Session Input */\nexport type AcpCloseSessionInput = {\n cfg: Config;\n sessionKey: string;\n reason: string;\n requireAcpSession?: boolean;\n clearMeta?: boolean;\n allowBackendUnavailable?: boolean;\n};\n\n/** ACP Close Session Result */\nexport type AcpCloseSessionResult = {\n runtimeClosed: boolean;\n runtimeNotice?: string;\n metaCleared: boolean;\n};\n\n/** Active Turn State */\nexport type ActiveTurnState = {\n runtime: AcpRuntime;\n handle: AcpRuntimeHandle;\n abortController: AbortController;\n cancelPromise?: Promise<void>;\n};\n\n/** Turn Latency Stats */\nexport type TurnLatencyStats = {\n completed: number;\n failed: number;\n totalMs: number;\n maxMs: number;\n};\n\n/** ACP Manager Observability Snapshot */\nexport type AcpManagerObservabilitySnapshot = {\n runtimeCache: {\n activeSessions: number;\n idleTtlMs: number;\n evictedTotal: number;\n lastEvictedAt?: number;\n };\n turns: {\n active: number;\n queueDepth: number;\n completed: number;\n failed: number;\n averageLatencyMs: number;\n maxLatencyMs: number;\n };\n errorsByCode: Record<string, number>;\n};\n\n/** ACP Startup Identity Reconcile Result */\nexport type AcpStartupIdentityReconcileResult = {\n checked: number;\n resolved: number;\n failed: number;\n};\n\n/** Session ACP Meta with Entry */\nexport type SessionEntryWithAcp = SessionEntry & {\n acp: SessionAcpMeta;\n};\n\n/** ACP Session Manager Dependencies */\nexport type AcpSessionManagerDeps = {\n requireRuntimeBackend: (id?: string) => { id: string; runtime: AcpRuntime };\n readSessionEntry: (params: { cfg: Config; sessionKey: string }) => SessionEntry | undefined;\n upsertSessionMeta: (params: {\n cfg: Config;\n sessionKey: string;\n mutate: (\n current: SessionAcpMeta | undefined,\n entry: SessionEntry | undefined,\n ) => SessionAcpMeta | null | undefined;\n }) => Promise<SessionEntry | null>;\n listAcpSessions: (params: { cfg: Config }) => Promise<SessionEntry[]>;\n};\n\n/** Cached Runtime State */\nexport type CachedRuntimeState = {\n runtime: AcpRuntime;\n handle: AcpRuntimeHandle;\n backend: string;\n agent: string;\n mode: AcpRuntimeSessionMode;\n cwd?: string;\n appliedControlSignature?: string;\n lastTouchedAt: number;\n};\n\n/** Default Dependencies (will be implemented in manager.ts) */\nexport const DEFAULT_DEPS: AcpSessionManagerDeps = {\n requireRuntimeBackend: () => {\n throw new Error(\"ACP runtime backend not configured\");\n },\n readSessionEntry: () => undefined,\n upsertSessionMeta: async () => null,\n listAcpSessions: async () => [],\n};"],"mappings":";;AAyJA,MAAa,eAAsC;CACjD,6BAA6B;AAC3B,QAAM,IAAI,MAAM,qCAAqC;;CAEvD,wBAAwB,KAAA;CACxB,mBAAmB,YAAY;CAC/B,iBAAiB,YAAY,EAAE;CAChC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Manager Utilities
3
- *
4
- * Utility functions for ACP session manager.
5
- */
6
- import type { Config } from "../../config/schema.js";
7
- import { AcpRuntimeError } from "../runtime/errors.js";
8
- import type { SessionAcpMeta, AcpSessionResolution } from "../runtime/types.js";
9
- export { normalizeAcpErrorCode } from "../runtime/errors.js";
10
- /** Normalize actor key */
11
- export declare function normalizeActorKey(sessionKey: string): string;
12
- /** Normalize session key string */
13
- export declare function normalizeSessionKey(sessionKey: string): string;
14
- /** Whether key looks like an ACP session */
15
- export declare function isAcpSessionKey(sessionKey: string): boolean;
16
- /** Parse agent id from agent-prefixed session keys */
17
- export declare function resolveAcpAgentFromSessionKey(sessionKey: string, defaultAgent: string): string;
18
- /** Resolve idle TTL in ms from config */
19
- export declare function resolveRuntimeIdleTtlMs(cfg: Config): number;
20
- /** Require `ready` resolution or throw */
21
- export declare function requireReadySessionMeta(resolution: AcpSessionResolution): SessionAcpMeta;
22
- /** Map resolution to a thrown `AcpRuntimeError` */
23
- export declare function resolveAcpSessionResolutionError(resolution: AcpSessionResolution): AcpRuntimeError;
24
- /** Error when session meta is missing */
25
- export declare function resolveMissingMetaError(sessionKey: string): Error;
26
- /** Re-export */
27
- export { createUnsupportedControlError } from "../runtime/errors.js";
28
- /** Re-export text normalizer */
29
- export { normalizeText } from "./runtime-options.js";
@@ -1,46 +0,0 @@
1
- import { AcpRuntimeError, createUnsupportedControlError, normalizeAcpErrorCode } from "../runtime/errors.js";
2
- import { normalizeText } from "./runtime-options.js";
3
- //#region src/acp/control-plane/manager.utils.ts
4
- /** Normalize actor key */
5
- function normalizeActorKey(sessionKey) {
6
- return sessionKey.trim().toLowerCase();
7
- }
8
- /** Normalize session key string */
9
- function normalizeSessionKey(sessionKey) {
10
- return sessionKey.trim();
11
- }
12
- /** Whether key looks like an ACP session */
13
- function isAcpSessionKey(sessionKey) {
14
- return sessionKey.includes(":acp:");
15
- }
16
- /** Parse agent id from agent-prefixed session keys */
17
- function resolveAcpAgentFromSessionKey(sessionKey, defaultAgent) {
18
- const parts = sessionKey.split(":");
19
- if (parts.length >= 2 && parts[0] === "agent") return parts[1];
20
- return defaultAgent;
21
- }
22
- /** Resolve idle TTL in ms from config */
23
- function resolveRuntimeIdleTtlMs(cfg) {
24
- const ttlMinutes = cfg.acp?.runtime?.ttlMinutes;
25
- if (typeof ttlMinutes !== "number" || !Number.isFinite(ttlMinutes)) return 0;
26
- return Math.max(0, ttlMinutes * 60 * 1e3);
27
- }
28
- /** Require `ready` resolution or throw */
29
- function requireReadySessionMeta(resolution) {
30
- if (resolution.kind !== "ready") throw resolveAcpSessionResolutionError(resolution);
31
- return resolution.meta;
32
- }
33
- /** Map resolution to a thrown `AcpRuntimeError` */
34
- function resolveAcpSessionResolutionError(resolution) {
35
- if (resolution.kind === "ready") return new AcpRuntimeError("ACP_SESSION_INIT_FAILED", "Session is ready.");
36
- if (resolution.kind === "stale") return resolution.error instanceof AcpRuntimeError ? resolution.error : new AcpRuntimeError("ACP_SESSION_INIT_FAILED", resolution.error.message);
37
- return new AcpRuntimeError("ACP_SESSION_INIT_FAILED", `ACP session not found: ${resolution.sessionKey}`);
38
- }
39
- /** Error when session meta is missing */
40
- function resolveMissingMetaError(sessionKey) {
41
- return new AcpRuntimeError("ACP_SESSION_INIT_FAILED", `ACP session metadata not found for ${sessionKey}`);
42
- }
43
- //#endregion
44
- export { createUnsupportedControlError, isAcpSessionKey, normalizeAcpErrorCode, normalizeActorKey, normalizeSessionKey, normalizeText, requireReadySessionMeta, resolveAcpAgentFromSessionKey, resolveAcpSessionResolutionError, resolveMissingMetaError, resolveRuntimeIdleTtlMs };
45
-
46
- //# sourceMappingURL=manager.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.utils.js","names":[],"sources":["../../../../src/acp/control-plane/manager.utils.ts"],"sourcesContent":["/**\n * Manager Utilities\n * \n * Utility functions for ACP session manager.\n */\n\nimport type { Config } from \"../../config/schema.js\";\nimport { AcpRuntimeError } from \"../runtime/errors.js\";\nimport type { SessionAcpMeta, AcpSessionResolution } from \"../runtime/types.js\";\n\n// Re-export normalizeAcpErrorCode for use in manager\nexport { normalizeAcpErrorCode } from \"../runtime/errors.js\";\n\n/** Normalize actor key */\nexport function normalizeActorKey(sessionKey: string): string {\n return sessionKey.trim().toLowerCase();\n}\n\n/** Normalize session key string */\nexport function normalizeSessionKey(sessionKey: string): string {\n return sessionKey.trim();\n}\n\n/** Whether key looks like an ACP session */\nexport function isAcpSessionKey(sessionKey: string): boolean {\n return sessionKey.includes(\":acp:\");\n}\n\n/** Parse agent id from agent-prefixed session keys */\nexport function resolveAcpAgentFromSessionKey(\n sessionKey: string,\n defaultAgent: string,\n): string {\n // e.g. `agent:<id>:acp:<uuid>`\n const parts = sessionKey.split(\":\");\n if (parts.length >= 2 && parts[0] === \"agent\") {\n return parts[1];\n }\n return defaultAgent;\n}\n\n/** Resolve idle TTL in ms from config */\nexport function resolveRuntimeIdleTtlMs(cfg: Config): number {\n const ttlMinutes = cfg.acp?.runtime?.ttlMinutes;\n if (typeof ttlMinutes !== \"number\" || !Number.isFinite(ttlMinutes)) {\n return 0;\n }\n return Math.max(0, ttlMinutes * 60 * 1000);\n}\n\n/** Require `ready` resolution or throw */\nexport function requireReadySessionMeta(resolution: AcpSessionResolution): SessionAcpMeta {\n if (resolution.kind !== \"ready\") {\n throw resolveAcpSessionResolutionError(resolution);\n }\n return resolution.meta;\n}\n\n/** Map resolution to a thrown `AcpRuntimeError` */\nexport function resolveAcpSessionResolutionError(\n resolution: AcpSessionResolution,\n): AcpRuntimeError {\n if (resolution.kind === \"ready\") {\n return new AcpRuntimeError(\"ACP_SESSION_INIT_FAILED\", \"Session is ready.\");\n }\n if (resolution.kind === \"stale\") {\n return resolution.error instanceof AcpRuntimeError\n ? resolution.error\n : new AcpRuntimeError(\"ACP_SESSION_INIT_FAILED\", resolution.error.message);\n }\n return new AcpRuntimeError(\n \"ACP_SESSION_INIT_FAILED\",\n `ACP session not found: ${resolution.sessionKey}`,\n );\n}\n\n/** Error when session meta is missing */\nexport function resolveMissingMetaError(sessionKey: string): Error {\n return new AcpRuntimeError(\n \"ACP_SESSION_INIT_FAILED\",\n `ACP session metadata not found for ${sessionKey}`,\n );\n}\n\n/** Re-export */\nexport { createUnsupportedControlError } from \"../runtime/errors.js\";\n\n/** Re-export text normalizer */\nexport { normalizeText } from \"./runtime-options.js\";"],"mappings":";;;;AAcA,SAAgB,kBAAkB,YAA4B;AAC5D,QAAO,WAAW,MAAM,CAAC,aAAa;;;AAIxC,SAAgB,oBAAoB,YAA4B;AAC9D,QAAO,WAAW,MAAM;;;AAI1B,SAAgB,gBAAgB,YAA6B;AAC3D,QAAO,WAAW,SAAS,QAAQ;;;AAIrC,SAAgB,8BACd,YACA,cACQ;CAER,MAAM,QAAQ,WAAW,MAAM,IAAI;AACnC,KAAI,MAAM,UAAU,KAAK,MAAM,OAAO,QACpC,QAAO,MAAM;AAEf,QAAO;;;AAIT,SAAgB,wBAAwB,KAAqB;CAC3D,MAAM,aAAa,IAAI,KAAK,SAAS;AACrC,KAAI,OAAO,eAAe,YAAY,CAAC,OAAO,SAAS,WAAW,CAChE,QAAO;AAET,QAAO,KAAK,IAAI,GAAG,aAAa,KAAK,IAAK;;;AAI5C,SAAgB,wBAAwB,YAAkD;AACxF,KAAI,WAAW,SAAS,QACtB,OAAM,iCAAiC,WAAW;AAEpD,QAAO,WAAW;;;AAIpB,SAAgB,iCACd,YACiB;AACjB,KAAI,WAAW,SAAS,QACtB,QAAO,IAAI,gBAAgB,2BAA2B,oBAAoB;AAE5E,KAAI,WAAW,SAAS,QACtB,QAAO,WAAW,iBAAiB,kBAC/B,WAAW,QACX,IAAI,gBAAgB,2BAA2B,WAAW,MAAM,QAAQ;AAE9E,QAAO,IAAI,gBACT,2BACA,0BAA0B,WAAW,aACtC;;;AAIH,SAAgB,wBAAwB,YAA2B;AACjE,QAAO,IAAI,gBACT,2BACA,sCAAsC,aACvC"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Runtime Cache Manager
3
- *
4
- * Manages runtime handle caching, eviction, and handle lifecycle.
5
- */
6
- import type { Config } from "../../config/schema.js";
7
- import type { AcpRuntime, AcpRuntimeHandle, SessionAcpMeta } from "../runtime/types.js";
8
- import type { CachedRuntimeState } from "./manager.types.js";
9
- export interface RuntimeCacheManagerDeps {
10
- persistMeta: (sessionKey: string, meta: SessionAcpMeta) => Promise<void>;
11
- enforceConcurrentLimit: (sessionKey: string) => void;
12
- }
13
- export declare class RuntimeCacheManager {
14
- private readonly deps;
15
- private readonly cache;
16
- private evictedRuntimeCount;
17
- private lastEvictedAt;
18
- constructor(deps: RuntimeCacheManagerDeps);
19
- /** Get cached runtime state */
20
- get(sessionKey: string): CachedRuntimeState | null;
21
- /** Check if session is cached */
22
- has(sessionKey: string): boolean;
23
- /** Get cache size */
24
- size(): number;
25
- /** Clear cached runtime state */
26
- clear(sessionKey: string): void;
27
- /** Ensure runtime handle exists (create or reuse cached) */
28
- ensureHandle(params: {
29
- cfg: Config;
30
- sessionKey: string;
31
- meta: SessionAcpMeta;
32
- }): Promise<{
33
- runtime: AcpRuntime;
34
- handle: AcpRuntimeHandle;
35
- meta: SessionAcpMeta;
36
- }>;
37
- /** Evict idle runtime handles based on TTL */
38
- evictIdle(params: {
39
- cfg: Config;
40
- hasActiveTurn: (sessionKey: string) => boolean;
41
- onEvict: (state: CachedRuntimeState) => Promise<void>;
42
- }): Promise<void>;
43
- /** Get eviction statistics */
44
- getEvictionStats(): {
45
- evictedTotal: number;
46
- lastEvictedAt?: number;
47
- };
48
- private set;
49
- }
@@ -1,155 +0,0 @@
1
- import { AcpRuntimeError, withAcpRuntimeErrorBoundary } from "../runtime/errors.js";
2
- import { requireAcpRuntimeBackend } from "../runtime/registry.js";
3
- import { createIdentityFromEnsure, identityEquals, mergeSessionIdentity, resolveRuntimeHandleIdentifiersFromIdentity, resolveSessionIdentityFromMeta } from "../runtime/session-identity.js";
4
- import { normalizeRuntimeOptions, normalizeText, resolveRuntimeOptionsFromMeta, runtimeOptionsEqual } from "./runtime-options.js";
5
- import { normalizeActorKey, normalizeSessionKey, resolveAcpAgentFromSessionKey, resolveRuntimeIdleTtlMs } from "./manager.utils.js";
6
- import { RuntimeCache } from "./runtime-cache.js";
7
- //#region src/acp/control-plane/runtime-cache-manager.ts
8
- var RuntimeCacheManager = class {
9
- cache = new RuntimeCache();
10
- evictedRuntimeCount = 0;
11
- lastEvictedAt;
12
- constructor(deps) {
13
- this.deps = deps;
14
- }
15
- /** Get cached runtime state */
16
- get(sessionKey) {
17
- return this.cache.get(normalizeActorKey(sessionKey));
18
- }
19
- /** Check if session is cached */
20
- has(sessionKey) {
21
- return this.cache.has(normalizeActorKey(sessionKey));
22
- }
23
- /** Get cache size */
24
- size() {
25
- return this.cache.size();
26
- }
27
- /** Clear cached runtime state */
28
- clear(sessionKey) {
29
- this.cache.clear(normalizeActorKey(sessionKey));
30
- }
31
- /** Ensure runtime handle exists (create or reuse cached) */
32
- async ensureHandle(params) {
33
- const { cfg, sessionKey, meta } = params;
34
- const normalizedKey = normalizeSessionKey(sessionKey);
35
- if (!normalizedKey) throw new AcpRuntimeError("ACP_SESSION_INIT_FAILED", "ACP session key is required.");
36
- const agent = meta.agent?.trim() || resolveAcpAgentFromSessionKey(normalizedKey, "main");
37
- const mode = meta.mode;
38
- const runtimeOptions = resolveRuntimeOptionsFromMeta(meta);
39
- const cwd = runtimeOptions.cwd ?? normalizeText(meta.cwd);
40
- const configuredBackend = (meta.backend || cfg.acp?.backend || "").trim();
41
- const cached = this.get(normalizedKey);
42
- if (cached) {
43
- const backendMatches = !configuredBackend || cached.backend === configuredBackend;
44
- const agentMatches = cached.agent === agent;
45
- const modeMatches = cached.mode === mode;
46
- const cwdMatches = (cached.cwd ?? "") === (cwd ?? "");
47
- if (backendMatches && agentMatches && modeMatches && cwdMatches) return {
48
- runtime: cached.runtime,
49
- handle: cached.handle,
50
- meta
51
- };
52
- this.clear(normalizedKey);
53
- }
54
- this.deps.enforceConcurrentLimit(normalizedKey);
55
- const backend = requireAcpRuntimeBackend(configuredBackend || void 0);
56
- const runtime = backend.runtime;
57
- const ensured = await withAcpRuntimeErrorBoundary({
58
- run: async () => await runtime.ensureSession({
59
- sessionKey: normalizedKey,
60
- agent,
61
- mode,
62
- cwd
63
- }),
64
- fallbackCode: "ACP_SESSION_INIT_FAILED",
65
- fallbackMessage: "Could not initialize ACP session runtime."
66
- });
67
- const previousMeta = meta;
68
- const previousIdentity = resolveSessionIdentityFromMeta(previousMeta);
69
- const now = Date.now();
70
- const effectiveCwd = normalizeText(ensured.cwd) ?? cwd;
71
- const nextRuntimeOptions = normalizeRuntimeOptions({
72
- ...runtimeOptions,
73
- ...effectiveCwd ? { cwd: effectiveCwd } : {}
74
- });
75
- const nextIdentity = mergeSessionIdentity({
76
- current: previousIdentity,
77
- incoming: createIdentityFromEnsure({
78
- handle: ensured,
79
- now
80
- }),
81
- now
82
- }) ?? previousIdentity;
83
- const nextHandleIdentifiers = resolveRuntimeHandleIdentifiersFromIdentity(nextIdentity);
84
- const nextHandle = {
85
- ...ensured,
86
- ...nextHandleIdentifiers.backendSessionId ? { backendSessionId: nextHandleIdentifiers.backendSessionId } : {},
87
- ...nextHandleIdentifiers.agentSessionId ? { agentSessionId: nextHandleIdentifiers.agentSessionId } : {}
88
- };
89
- const nextMeta = {
90
- backend: ensured.backend || backend.id,
91
- agent,
92
- runtimeSessionName: ensured.runtimeSessionName,
93
- ...nextIdentity ? { identity: nextIdentity } : {},
94
- mode: meta.mode,
95
- ...Object.keys(nextRuntimeOptions).length > 0 ? { runtimeOptions: nextRuntimeOptions } : {},
96
- ...effectiveCwd ? { cwd: effectiveCwd } : {},
97
- state: previousMeta.state,
98
- lastActivityAt: now,
99
- ...previousMeta.lastError ? { lastError: previousMeta.lastError } : {}
100
- };
101
- if (previousMeta.backend !== nextMeta.backend || previousMeta.runtimeSessionName !== nextMeta.runtimeSessionName || !identityEquals(previousIdentity, nextIdentity) || previousMeta.agent !== nextMeta.agent || previousMeta.cwd !== nextMeta.cwd || !runtimeOptionsEqual(previousMeta.runtimeOptions, nextMeta.runtimeOptions)) await this.deps.persistMeta(normalizedKey, nextMeta);
102
- this.set(normalizedKey, {
103
- runtime,
104
- handle: nextHandle,
105
- backend: ensured.backend || backend.id,
106
- agent,
107
- mode,
108
- cwd: effectiveCwd
109
- });
110
- return {
111
- runtime,
112
- handle: nextHandle,
113
- meta: nextMeta
114
- };
115
- }
116
- /** Evict idle runtime handles based on TTL */
117
- async evictIdle(params) {
118
- const { cfg, hasActiveTurn, onEvict } = params;
119
- const idleTtlMs = resolveRuntimeIdleTtlMs(cfg);
120
- if (idleTtlMs <= 0 || this.cache.size() === 0) return;
121
- const now = Date.now();
122
- const candidates = this.cache.collectIdleCandidates({
123
- maxIdleMs: idleTtlMs,
124
- now
125
- });
126
- if (candidates.length === 0) return;
127
- for (const candidate of candidates) {
128
- if (hasActiveTurn(candidate.actorKey)) continue;
129
- const lastTouchedAt = this.cache.getLastTouchedAt(candidate.actorKey);
130
- if (lastTouchedAt == null || now - lastTouchedAt < idleTtlMs) continue;
131
- const cached = this.cache.peek(candidate.actorKey);
132
- if (!cached) continue;
133
- this.cache.clear(candidate.actorKey);
134
- this.evictedRuntimeCount += 1;
135
- this.lastEvictedAt = Date.now();
136
- try {
137
- await onEvict(cached);
138
- } catch {}
139
- }
140
- }
141
- /** Get eviction statistics */
142
- getEvictionStats() {
143
- return {
144
- evictedTotal: this.evictedRuntimeCount,
145
- lastEvictedAt: this.lastEvictedAt
146
- };
147
- }
148
- set(sessionKey, state) {
149
- this.cache.set(normalizeActorKey(sessionKey), state);
150
- }
151
- };
152
- //#endregion
153
- export { RuntimeCacheManager };
154
-
155
- //# sourceMappingURL=runtime-cache-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-cache-manager.js","names":[],"sources":["../../../../src/acp/control-plane/runtime-cache-manager.ts"],"sourcesContent":["/**\n * Runtime Cache Manager\n * \n * Manages runtime handle caching, eviction, and handle lifecycle.\n */\n\nimport type { Config } from \"../../config/schema.js\";\nimport { AcpRuntimeError, withAcpRuntimeErrorBoundary } from \"../runtime/errors.js\";\nimport {\n createIdentityFromEnsure,\n identityEquals,\n mergeSessionIdentity,\n resolveRuntimeHandleIdentifiersFromIdentity,\n resolveSessionIdentityFromMeta,\n} from \"../runtime/session-identity.js\";\nimport type { AcpRuntime, AcpRuntimeHandle, SessionAcpMeta } from \"../runtime/types.js\";\nimport { requireAcpRuntimeBackend } from \"../runtime/registry.js\";\nimport type { CachedRuntimeState } from \"./manager.types.js\";\nimport { RuntimeCache } from \"./runtime-cache.js\";\nimport {\n normalizeActorKey,\n normalizeSessionKey,\n normalizeText,\n resolveAcpAgentFromSessionKey,\n resolveRuntimeIdleTtlMs,\n} from \"./manager.utils.js\";\nimport {\n normalizeRuntimeOptions,\n resolveRuntimeOptionsFromMeta,\n runtimeOptionsEqual,\n} from \"./runtime-options.js\";\n\nexport interface RuntimeCacheManagerDeps {\n persistMeta: (sessionKey: string, meta: SessionAcpMeta) => Promise<void>;\n enforceConcurrentLimit: (sessionKey: string) => void;\n}\n\nexport class RuntimeCacheManager {\n private readonly cache = new RuntimeCache();\n private evictedRuntimeCount = 0;\n private lastEvictedAt: number | undefined;\n\n constructor(private readonly deps: RuntimeCacheManagerDeps) {}\n\n /** Get cached runtime state */\n get(sessionKey: string): CachedRuntimeState | null {\n return this.cache.get(normalizeActorKey(sessionKey));\n }\n\n /** Check if session is cached */\n has(sessionKey: string): boolean {\n return this.cache.has(normalizeActorKey(sessionKey));\n }\n\n /** Get cache size */\n size(): number {\n return this.cache.size();\n }\n\n /** Clear cached runtime state */\n clear(sessionKey: string): void {\n this.cache.clear(normalizeActorKey(sessionKey));\n }\n\n /** Ensure runtime handle exists (create or reuse cached) */\n async ensureHandle(params: {\n cfg: Config;\n sessionKey: string;\n meta: SessionAcpMeta;\n }): Promise<{ runtime: AcpRuntime; handle: AcpRuntimeHandle; meta: SessionAcpMeta }> {\n const { cfg, sessionKey, meta } = params;\n const normalizedKey = normalizeSessionKey(sessionKey);\n if (!normalizedKey) {\n throw new AcpRuntimeError(\"ACP_SESSION_INIT_FAILED\", \"ACP session key is required.\");\n }\n\n const agent = meta.agent?.trim() || resolveAcpAgentFromSessionKey(normalizedKey, \"main\");\n const mode = meta.mode;\n const runtimeOptions = resolveRuntimeOptionsFromMeta(meta);\n const cwd = runtimeOptions.cwd ?? normalizeText(meta.cwd);\n const configuredBackend = (meta.backend || cfg.acp?.backend || \"\").trim();\n\n // Check cache first\n const cached = this.get(normalizedKey);\n if (cached) {\n const backendMatches = !configuredBackend || cached.backend === configuredBackend;\n const agentMatches = cached.agent === agent;\n const modeMatches = cached.mode === mode;\n const cwdMatches = (cached.cwd ?? \"\") === (cwd ?? \"\");\n\n if (backendMatches && agentMatches && modeMatches && cwdMatches) {\n return { runtime: cached.runtime, handle: cached.handle, meta };\n }\n this.clear(normalizedKey);\n }\n\n this.deps.enforceConcurrentLimit(normalizedKey);\n\n const backend = requireAcpRuntimeBackend(configuredBackend || undefined);\n const runtime = backend.runtime;\n\n const ensured = await withAcpRuntimeErrorBoundary({\n run: async () =>\n await runtime.ensureSession({\n sessionKey: normalizedKey,\n agent,\n mode,\n cwd,\n }),\n fallbackCode: \"ACP_SESSION_INIT_FAILED\",\n fallbackMessage: \"Could not initialize ACP session runtime.\",\n });\n\n const previousMeta = meta;\n const previousIdentity = resolveSessionIdentityFromMeta(previousMeta);\n const now = Date.now();\n const effectiveCwd = normalizeText(ensured.cwd) ?? cwd;\n const nextRuntimeOptions = normalizeRuntimeOptions({\n ...runtimeOptions,\n ...(effectiveCwd ? { cwd: effectiveCwd } : {}),\n });\n\n const nextIdentity =\n mergeSessionIdentity({\n current: previousIdentity,\n incoming: createIdentityFromEnsure({ handle: ensured, now }),\n now,\n }) ?? previousIdentity;\n\n const nextHandleIdentifiers = resolveRuntimeHandleIdentifiersFromIdentity(nextIdentity);\n const nextHandle: AcpRuntimeHandle = {\n ...ensured,\n ...(nextHandleIdentifiers.backendSessionId\n ? { backendSessionId: nextHandleIdentifiers.backendSessionId }\n : {}),\n ...(nextHandleIdentifiers.agentSessionId\n ? { agentSessionId: nextHandleIdentifiers.agentSessionId }\n : {}),\n };\n\n const nextMeta: SessionAcpMeta = {\n backend: ensured.backend || backend.id,\n agent,\n runtimeSessionName: ensured.runtimeSessionName,\n ...(nextIdentity ? { identity: nextIdentity } : {}),\n mode: meta.mode,\n ...(Object.keys(nextRuntimeOptions).length > 0 ? { runtimeOptions: nextRuntimeOptions } : {}),\n ...(effectiveCwd ? { cwd: effectiveCwd } : {}),\n state: previousMeta.state,\n lastActivityAt: now,\n ...(previousMeta.lastError ? { lastError: previousMeta.lastError } : {}),\n };\n\n const shouldPersistMeta =\n previousMeta.backend !== nextMeta.backend ||\n previousMeta.runtimeSessionName !== nextMeta.runtimeSessionName ||\n !identityEquals(previousIdentity, nextIdentity) ||\n previousMeta.agent !== nextMeta.agent ||\n previousMeta.cwd !== nextMeta.cwd ||\n !runtimeOptionsEqual(previousMeta.runtimeOptions, nextMeta.runtimeOptions);\n\n if (shouldPersistMeta) {\n await this.deps.persistMeta(normalizedKey, nextMeta);\n }\n\n this.set(normalizedKey, {\n runtime,\n handle: nextHandle,\n backend: ensured.backend || backend.id,\n agent,\n mode,\n cwd: effectiveCwd,\n });\n\n return { runtime, handle: nextHandle, meta: nextMeta };\n }\n\n /** Evict idle runtime handles based on TTL */\n async evictIdle(params: {\n cfg: Config;\n hasActiveTurn: (sessionKey: string) => boolean;\n onEvict: (state: CachedRuntimeState) => Promise<void>;\n }): Promise<void> {\n const { cfg, hasActiveTurn, onEvict } = params;\n const idleTtlMs = resolveRuntimeIdleTtlMs(cfg);\n if (idleTtlMs <= 0 || this.cache.size() === 0) {\n return;\n }\n\n const now = Date.now();\n const candidates = this.cache.collectIdleCandidates({ maxIdleMs: idleTtlMs, now });\n\n if (candidates.length === 0) return;\n\n for (const candidate of candidates) {\n if (hasActiveTurn(candidate.actorKey)) continue;\n\n const lastTouchedAt = this.cache.getLastTouchedAt(candidate.actorKey);\n if (lastTouchedAt == null || now - lastTouchedAt < idleTtlMs) continue;\n\n const cached = this.cache.peek(candidate.actorKey);\n if (!cached) continue;\n\n this.cache.clear(candidate.actorKey);\n this.evictedRuntimeCount += 1;\n this.lastEvictedAt = Date.now();\n\n try {\n await onEvict(cached);\n } catch {\n // Ignore close errors\n }\n }\n }\n\n /** Get eviction statistics */\n getEvictionStats(): { evictedTotal: number; lastEvictedAt?: number } {\n return {\n evictedTotal: this.evictedRuntimeCount,\n lastEvictedAt: this.lastEvictedAt,\n };\n }\n\n private set(\n sessionKey: string,\n state: Omit<CachedRuntimeState, \"lastTouchedAt\">,\n ): void {\n this.cache.set(normalizeActorKey(sessionKey), state);\n }\n}\n"],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Runtime Cache
3
- *
4
- * Caches active runtime handles for ACP sessions.
5
- */
6
- import type { AcpRuntime, AcpRuntimeHandle, AcpRuntimeSessionMode } from "../runtime/types.js";
7
- /** Cached Runtime State */
8
- export type CachedRuntimeState = {
9
- runtime: AcpRuntime;
10
- handle: AcpRuntimeHandle;
11
- backend: string;
12
- agent: string;
13
- mode: AcpRuntimeSessionMode;
14
- cwd?: string;
15
- appliedControlSignature?: string;
16
- lastTouchedAt: number;
17
- };
18
- export declare class RuntimeCache {
19
- private readonly cache;
20
- private readonly lastTouchedAt;
21
- /** Get cached runtime state */
22
- get(actorKey: string): CachedRuntimeState | null;
23
- /** Set cached runtime state */
24
- set(actorKey: string, state: Omit<CachedRuntimeState, "lastTouchedAt">): void;
25
- /** Check if cache has entry */
26
- has(actorKey: string): boolean;
27
- /** Clear cache entry */
28
- clear(actorKey: string): void;
29
- /** Get cache size */
30
- size(): number;
31
- /** Peek at cache entry without updating touch time */
32
- peek(actorKey: string): CachedRuntimeState | null;
33
- /** Get last touched time */
34
- getLastTouchedAt(actorKey: string): number | undefined;
35
- /** Collect idle candidates for eviction */
36
- collectIdleCandidates(params: {
37
- maxIdleMs: number;
38
- now: number;
39
- }): Array<{
40
- actorKey: string;
41
- state: CachedRuntimeState;
42
- }>;
43
- /** Clear all entries */
44
- clearAll(): void;
45
- }
@@ -1,58 +0,0 @@
1
- //#region src/acp/control-plane/runtime-cache.ts
2
- var RuntimeCache = class {
3
- cache = /* @__PURE__ */ new Map();
4
- lastTouchedAt = /* @__PURE__ */ new Map();
5
- /** Get cached runtime state */
6
- get(actorKey) {
7
- return this.cache.get(actorKey) ?? null;
8
- }
9
- /** Set cached runtime state */
10
- set(actorKey, state) {
11
- const now = Date.now();
12
- this.cache.set(actorKey, {
13
- ...state,
14
- lastTouchedAt: now
15
- });
16
- this.lastTouchedAt.set(actorKey, now);
17
- }
18
- /** Check if cache has entry */
19
- has(actorKey) {
20
- return this.cache.has(actorKey);
21
- }
22
- /** Clear cache entry */
23
- clear(actorKey) {
24
- this.cache.delete(actorKey);
25
- this.lastTouchedAt.delete(actorKey);
26
- }
27
- /** Get cache size */
28
- size() {
29
- return this.cache.size;
30
- }
31
- /** Peek at cache entry without updating touch time */
32
- peek(actorKey) {
33
- return this.cache.get(actorKey) ?? null;
34
- }
35
- /** Get last touched time */
36
- getLastTouchedAt(actorKey) {
37
- return this.lastTouchedAt.get(actorKey);
38
- }
39
- /** Collect idle candidates for eviction */
40
- collectIdleCandidates(params) {
41
- const { maxIdleMs, now } = params;
42
- const candidates = [];
43
- for (const [actorKey, state] of this.cache) if (now - (this.lastTouchedAt.get(actorKey) ?? state.lastTouchedAt) >= maxIdleMs) candidates.push({
44
- actorKey,
45
- state
46
- });
47
- return candidates;
48
- }
49
- /** Clear all entries */
50
- clearAll() {
51
- this.cache.clear();
52
- this.lastTouchedAt.clear();
53
- }
54
- };
55
- //#endregion
56
- export { RuntimeCache };
57
-
58
- //# sourceMappingURL=runtime-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-cache.js","names":[],"sources":["../../../../src/acp/control-plane/runtime-cache.ts"],"sourcesContent":["/**\n * Runtime Cache\n * \n * Caches active runtime handles for ACP sessions.\n */\n\nimport type { AcpRuntime, AcpRuntimeHandle, AcpRuntimeSessionMode } from \"../runtime/types.js\";\n\n/** Cached Runtime State */\nexport type CachedRuntimeState = {\n runtime: AcpRuntime;\n handle: AcpRuntimeHandle;\n backend: string;\n agent: string;\n mode: AcpRuntimeSessionMode;\n cwd?: string;\n appliedControlSignature?: string;\n lastTouchedAt: number;\n};\n\nexport class RuntimeCache {\n private readonly cache = new Map<string, CachedRuntimeState>();\n private readonly lastTouchedAt = new Map<string, number>();\n\n /** Get cached runtime state */\n get(actorKey: string): CachedRuntimeState | null {\n return this.cache.get(actorKey) ?? null;\n }\n\n /** Set cached runtime state */\n set(actorKey: string, state: Omit<CachedRuntimeState, \"lastTouchedAt\">): void {\n const now = Date.now();\n this.cache.set(actorKey, {\n ...state,\n lastTouchedAt: now,\n });\n this.lastTouchedAt.set(actorKey, now);\n }\n\n /** Check if cache has entry */\n has(actorKey: string): boolean {\n return this.cache.has(actorKey);\n }\n\n /** Clear cache entry */\n clear(actorKey: string): void {\n this.cache.delete(actorKey);\n this.lastTouchedAt.delete(actorKey);\n }\n\n /** Get cache size */\n size(): number {\n return this.cache.size;\n }\n\n /** Peek at cache entry without updating touch time */\n peek(actorKey: string): CachedRuntimeState | null {\n return this.cache.get(actorKey) ?? null;\n }\n\n /** Get last touched time */\n getLastTouchedAt(actorKey: string): number | undefined {\n return this.lastTouchedAt.get(actorKey);\n }\n\n /** Collect idle candidates for eviction */\n collectIdleCandidates(params: {\n maxIdleMs: number;\n now: number;\n }): Array<{ actorKey: string; state: CachedRuntimeState }> {\n const { maxIdleMs, now } = params;\n const candidates: Array<{ actorKey: string; state: CachedRuntimeState }> = [];\n \n for (const [actorKey, state] of this.cache) {\n const lastTouched = this.lastTouchedAt.get(actorKey) ?? state.lastTouchedAt;\n if (now - lastTouched >= maxIdleMs) {\n candidates.push({ actorKey, state });\n }\n }\n \n return candidates;\n }\n\n /** Clear all entries */\n clearAll(): void {\n this.cache.clear();\n this.lastTouchedAt.clear();\n }\n}"],"mappings":";AAoBA,IAAa,eAAb,MAA0B;CACxB,wBAAyB,IAAI,KAAiC;CAC9D,gCAAiC,IAAI,KAAqB;;CAG1D,IAAI,UAA6C;AAC/C,SAAO,KAAK,MAAM,IAAI,SAAS,IAAI;;;CAIrC,IAAI,UAAkB,OAAwD;EAC5E,MAAM,MAAM,KAAK,KAAK;AACtB,OAAK,MAAM,IAAI,UAAU;GACvB,GAAG;GACH,eAAe;GAChB,CAAC;AACF,OAAK,cAAc,IAAI,UAAU,IAAI;;;CAIvC,IAAI,UAA2B;AAC7B,SAAO,KAAK,MAAM,IAAI,SAAS;;;CAIjC,MAAM,UAAwB;AAC5B,OAAK,MAAM,OAAO,SAAS;AAC3B,OAAK,cAAc,OAAO,SAAS;;;CAIrC,OAAe;AACb,SAAO,KAAK,MAAM;;;CAIpB,KAAK,UAA6C;AAChD,SAAO,KAAK,MAAM,IAAI,SAAS,IAAI;;;CAIrC,iBAAiB,UAAsC;AACrD,SAAO,KAAK,cAAc,IAAI,SAAS;;;CAIzC,sBAAsB,QAGqC;EACzD,MAAM,EAAE,WAAW,QAAQ;EAC3B,MAAM,aAAqE,EAAE;AAE7E,OAAK,MAAM,CAAC,UAAU,UAAU,KAAK,MAEnC,KAAI,OADgB,KAAK,cAAc,IAAI,SAAS,IAAI,MAAM,kBACrC,UACvB,YAAW,KAAK;GAAE;GAAU;GAAO,CAAC;AAIxC,SAAO;;;CAIT,WAAiB;AACf,OAAK,MAAM,OAAO;AAClB,OAAK,cAAc,OAAO"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Runtime Options
3
- *
4
- * Utilities for managing ACP runtime options.
5
- */
6
- import type { AcpSessionRuntimeOptions, SessionAcpMeta } from "../runtime/types.js";
7
- /** Normalize optional string */
8
- export declare function normalizeText(value: unknown): string | undefined;
9
- /** Normalize runtime options object */
10
- export declare function normalizeRuntimeOptions(options: Partial<AcpSessionRuntimeOptions> | undefined): AcpSessionRuntimeOptions;
11
- /** Merge runtime option patches */
12
- export declare function mergeRuntimeOptions(params: {
13
- current: AcpSessionRuntimeOptions | undefined;
14
- patch: Partial<AcpSessionRuntimeOptions>;
15
- }): AcpSessionRuntimeOptions;
16
- /** Shallow equality for runtime options */
17
- export declare function runtimeOptionsEqual(a: AcpSessionRuntimeOptions | undefined, b: AcpSessionRuntimeOptions | undefined): boolean;
18
- /** Options from session meta */
19
- export declare function resolveRuntimeOptionsFromMeta(meta: SessionAcpMeta): AcpSessionRuntimeOptions;
20
- /** Validate non-empty runtime mode string */
21
- export declare function validateRuntimeModeInput(mode: string): string;
22
- /** Validate config option key/value pair */
23
- export declare function validateRuntimeConfigOptionInput(key: string, value: string): {
24
- key: string;
25
- value: string;
26
- };
27
- /** Validate a partial runtime options patch */
28
- export declare function validateRuntimeOptionPatch(patch: Partial<AcpSessionRuntimeOptions>): Partial<AcpSessionRuntimeOptions>;
29
- /** Map a single config key/value to a runtime options patch */
30
- export declare function inferRuntimeOptionPatchFromConfigOption(key: string, value: string): Partial<AcpSessionRuntimeOptions>;