@xopcai/xopc 0.0.6 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/dist/extensions/weixin/src/api/api.js +1 -1
  2. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  3. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  4. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  5. package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js → agents-BdC4Y-HX.js} +2 -2
  6. package/dist/gateway/static/root/assets/agents-BdC4Y-HX.js.map +1 -0
  7. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js → apps-page-C-oaSHkm.js} +2 -2
  8. package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js.map → apps-page-C-oaSHkm.js.map} +1 -1
  9. package/dist/gateway/static/root/assets/attachment-load-BDDlItdE.js +1 -0
  10. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js → channels-settings-BqEUppPO.js} +2 -2
  11. package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js.map → channels-settings-BqEUppPO.js.map} +1 -1
  12. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js → chat-agents-api-BhqjQ7iL.js} +2 -2
  13. package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js.map → chat-agents-api-BhqjQ7iL.js.map} +1 -1
  14. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js → cron-page-Cli49RKR.js} +2 -2
  15. package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js.map → cron-page-Cli49RKR.js.map} +1 -1
  16. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js → cron-utils-Dkj-Ldpf.js} +2 -2
  17. package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js.map → cron-utils-Dkj-Ldpf.js.map} +1 -1
  18. package/dist/gateway/static/root/assets/electron-env-BDtJw9AY.js +2 -0
  19. package/dist/gateway/static/root/assets/electron-env-BDtJw9AY.js.map +1 -0
  20. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js → extension-debug-page-BMcZlaxF.js} +2 -2
  21. package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js.map → extension-debug-page-BMcZlaxF.js.map} +1 -1
  22. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js → extension-iframe-host-D5HEF0KR.js} +2 -2
  23. package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js.map → extension-iframe-host-D5HEF0KR.js.map} +1 -1
  24. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js → extension-page-CXdCSSPl.js} +2 -2
  25. package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js.map → extension-page-CXdCSSPl.js.map} +1 -1
  26. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js → extension-provider-DZCZgQE2.js} +2 -2
  27. package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js.map → extension-provider-DZCZgQE2.js.map} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js → extension-settings-page-CX6STpx3.js} +2 -2
  29. package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js.map → extension-settings-page-CX6STpx3.js.map} +1 -1
  30. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js → gateway-config-swr-Cph02QZn.js} +2 -2
  31. package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js.map → gateway-config-swr-Cph02QZn.js.map} +1 -1
  32. package/dist/gateway/static/root/assets/index-Bty3m0mS.css +2 -0
  33. package/dist/gateway/static/root/assets/index-iTUyfzNr.js +16 -0
  34. package/dist/gateway/static/root/assets/index-iTUyfzNr.js.map +1 -0
  35. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js → logs-page-B9O5l3I8.js} +2 -2
  36. package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-B9O5l3I8.js.map} +1 -1
  37. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-BLiY_O25.js} +2 -2
  38. package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js.map → model-selector-BLiY_O25.js.map} +1 -1
  39. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js +2 -0
  40. package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js.map +1 -0
  41. package/dist/gateway/static/root/assets/page-header-store-BFpnFTed.js +2 -0
  42. package/dist/gateway/static/root/assets/{page-header-store-HcRZK5CZ.js.map → page-header-store-BFpnFTed.js.map} +1 -1
  43. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js → session-api-DEhQXWJg.js} +2 -2
  44. package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js.map → session-api-DEhQXWJg.js.map} +1 -1
  45. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js → session-working-directory-control-DKOtWs3-.js} +3 -3
  46. package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js.map → session-working-directory-control-DKOtWs3-.js.map} +1 -1
  47. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js → sessions-page-BYlWP1ep.js} +2 -2
  48. package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js.map → sessions-page-BYlWP1ep.js.map} +1 -1
  49. package/dist/gateway/static/root/assets/settings-page-oCnIavdg.js +2 -0
  50. package/dist/gateway/static/root/assets/settings-page-oCnIavdg.js.map +1 -0
  51. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js → skill-api-DWrn8Az0.js} +2 -2
  52. package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js.map → skill-api-DWrn8Az0.js.map} +1 -1
  53. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js → skills-page-C59WQpM1.js} +2 -2
  54. package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js.map → skills-page-C59WQpM1.js.map} +1 -1
  55. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js → theme-store-CywXkKml.js} +2 -2
  56. package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js.map → theme-store-CywXkKml.js.map} +1 -1
  57. package/dist/gateway/static/root/assets/url-D7yWllI8.js +2 -0
  58. package/dist/gateway/static/root/assets/url-D7yWllI8.js.map +1 -0
  59. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js → useTranslation-CACj0DBJ.js} +2 -2
  60. package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js.map → useTranslation-CACj0DBJ.js.map} +1 -1
  61. package/dist/gateway/static/root/index.html +16 -16
  62. package/dist/package.js +1 -1
  63. package/dist/src/agent/agent-manager.d.ts +1 -0
  64. package/dist/src/agent/agent-manager.js +17 -9
  65. package/dist/src/agent/agent-manager.js.map +1 -1
  66. package/dist/src/agent/background-review/run-background-review.js +2 -0
  67. package/dist/src/agent/background-review/run-background-review.js.map +1 -1
  68. package/dist/src/agent/child-agent-factory.js +2 -0
  69. package/dist/src/agent/child-agent-factory.js.map +1 -1
  70. package/dist/src/agent/context/expand-at-file-mentions.d.ts +4 -0
  71. package/dist/src/agent/context/expand-at-file-mentions.js +69 -0
  72. package/dist/src/agent/context/expand-at-file-mentions.js.map +1 -0
  73. package/dist/src/agent/context/workspace-seed.js +1 -1
  74. package/dist/src/agent/image/index.d.ts +0 -1
  75. package/dist/src/agent/image/index.js +1 -2
  76. package/dist/src/agent/image/understanding/pi-ai-provider.js.map +1 -1
  77. package/dist/src/agent/ipc/inbox.js +1 -1
  78. package/dist/src/agent/ipc/socket.js +1 -1
  79. package/dist/src/agent/memory/compaction.d.ts +1 -1
  80. package/dist/src/agent/memory/compaction.js +38 -11
  81. package/dist/src/agent/memory/compaction.js.map +1 -1
  82. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  83. package/dist/src/agent/messaging/command-handler.d.ts +13 -0
  84. package/dist/src/agent/messaging/command-handler.js +14 -2
  85. package/dist/src/agent/messaging/command-handler.js.map +1 -1
  86. package/dist/src/agent/orchestration/agent-orchestrator.js +6 -1
  87. package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
  88. package/dist/src/agent/service.d.ts +16 -1
  89. package/dist/src/agent/service.js +175 -17
  90. package/dist/src/agent/service.js.map +1 -1
  91. package/dist/src/agent/skills/format-skills-prompt.js.map +1 -1
  92. package/dist/src/agent/skills/hub-hash.js +1 -1
  93. package/dist/src/agent/skills/hub-pull.js +1 -1
  94. package/dist/src/agent/skills/scanner.js +1 -1
  95. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  96. package/dist/src/agent/skills/skill-manage-ops.js.map +1 -1
  97. package/dist/src/agent/tools/browser/tools.js +2 -2
  98. package/dist/src/agent/tools/browser/tools.js.map +1 -1
  99. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  100. package/dist/src/agent/tools/image-tool.js +2 -2
  101. package/dist/src/agent/tools/image-tool.js.map +1 -1
  102. package/dist/src/agent/tools/index.d.ts +1 -1
  103. package/dist/src/agent/tools/index.js +2 -2
  104. package/dist/src/agent/tools/read.d.ts +0 -2
  105. package/dist/src/agent/tools/read.js +1 -3
  106. package/dist/src/agent/tools/read.js.map +1 -1
  107. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  108. package/dist/src/agent/tools/write.js +1 -1
  109. package/dist/src/auth/credentials.js +2 -2
  110. package/dist/src/channels/attachments/inbound-persist.js +1 -1
  111. package/dist/src/channels/attachments/outbound-tts-persist.js +1 -1
  112. package/dist/src/channels/index.d.ts +1 -1
  113. package/dist/src/channels/index.js +2 -2
  114. package/dist/src/channels/pipeline.d.ts +8 -1
  115. package/dist/src/channels/pipeline.js +49 -4
  116. package/dist/src/channels/pipeline.js.map +1 -1
  117. package/dist/src/channels/plugin-types.d.ts +14 -0
  118. package/dist/src/chat-commands/builtins/config.d.ts +4 -0
  119. package/dist/src/chat-commands/builtins/config.js +197 -0
  120. package/dist/src/chat-commands/builtins/config.js.map +1 -0
  121. package/dist/src/chat-commands/builtins/context.d.ts +4 -0
  122. package/dist/src/chat-commands/builtins/context.js +44 -0
  123. package/dist/src/chat-commands/builtins/context.js.map +1 -0
  124. package/dist/src/chat-commands/builtins/session.js +111 -0
  125. package/dist/src/chat-commands/builtins/session.js.map +1 -1
  126. package/dist/src/chat-commands/builtins/thinking.js +49 -21
  127. package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
  128. package/dist/src/chat-commands/config-paths.d.ts +10 -0
  129. package/dist/src/chat-commands/config-paths.js +45 -0
  130. package/dist/src/chat-commands/config-paths.js.map +1 -0
  131. package/dist/src/chat-commands/config-value.d.ts +12 -0
  132. package/dist/src/chat-commands/config-value.js +53 -0
  133. package/dist/src/chat-commands/config-value.js.map +1 -0
  134. package/dist/src/chat-commands/context.d.ts +24 -1
  135. package/dist/src/chat-commands/context.js +41 -0
  136. package/dist/src/chat-commands/context.js.map +1 -1
  137. package/dist/src/chat-commands/index.d.ts +2 -0
  138. package/dist/src/chat-commands/index.js +5 -1
  139. package/dist/src/chat-commands/index.js.map +1 -1
  140. package/dist/src/chat-commands/types.d.ts +33 -1
  141. package/dist/src/cli/commands/agent/interactive.js +1 -1
  142. package/dist/src/cli/commands/agent/interactive.js.map +1 -1
  143. package/dist/src/cli/commands/agent.js +21 -9
  144. package/dist/src/cli/commands/agent.js.map +1 -1
  145. package/dist/src/cli/commands/auth.js.map +1 -1
  146. package/dist/src/cli/commands/doctor/checks/channel-config.d.ts +2 -0
  147. package/dist/src/cli/commands/doctor/checks/channel-config.js +113 -0
  148. package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -0
  149. package/dist/src/cli/commands/doctor/checks/channel-plugins.d.ts +2 -0
  150. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +47 -0
  151. package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -0
  152. package/dist/src/cli/commands/doctor/checks/config-health.d.ts +2 -0
  153. package/dist/src/cli/commands/doctor/checks/config-health.js +82 -0
  154. package/dist/src/cli/commands/doctor/checks/config-health.js.map +1 -0
  155. package/dist/src/cli/commands/doctor/checks/cron-health.d.ts +2 -0
  156. package/dist/src/cli/commands/doctor/checks/cron-health.js +116 -0
  157. package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -0
  158. package/dist/src/cli/commands/doctor/checks/gateway-health.d.ts +2 -0
  159. package/dist/src/cli/commands/doctor/checks/gateway-health.js +64 -0
  160. package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +1 -0
  161. package/dist/src/cli/commands/doctor/checks/gateway-service.d.ts +2 -0
  162. package/dist/src/cli/commands/doctor/checks/gateway-service.js +64 -0
  163. package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +1 -0
  164. package/dist/src/cli/commands/doctor/checks/node-version.d.ts +2 -0
  165. package/dist/src/cli/commands/doctor/checks/node-version.js +33 -0
  166. package/dist/src/cli/commands/doctor/checks/node-version.js.map +1 -0
  167. package/dist/src/cli/commands/doctor/checks/provider-auth.d.ts +2 -0
  168. package/dist/src/cli/commands/doctor/checks/provider-auth.js +91 -0
  169. package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -0
  170. package/dist/src/cli/commands/doctor/checks/security-audit.d.ts +2 -0
  171. package/dist/src/cli/commands/doctor/checks/security-audit.js +85 -0
  172. package/dist/src/cli/commands/doctor/checks/security-audit.js.map +1 -0
  173. package/dist/src/cli/commands/doctor/checks/session-integrity.d.ts +2 -0
  174. package/dist/src/cli/commands/doctor/checks/session-integrity.js +118 -0
  175. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -0
  176. package/dist/src/cli/commands/doctor/checks/state-integrity.d.ts +2 -0
  177. package/dist/src/cli/commands/doctor/checks/state-integrity.js +99 -0
  178. package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +1 -0
  179. package/dist/src/cli/commands/doctor/checks/version-check.d.ts +2 -0
  180. package/dist/src/cli/commands/doctor/checks/version-check.js +71 -0
  181. package/dist/src/cli/commands/doctor/checks/version-check.js.map +1 -0
  182. package/dist/src/cli/commands/doctor/checks/workspace-status.d.ts +2 -0
  183. package/dist/src/cli/commands/doctor/checks/workspace-status.js +73 -0
  184. package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -0
  185. package/dist/src/cli/commands/doctor/flow.d.ts +9 -0
  186. package/dist/src/cli/commands/doctor/flow.js +51 -0
  187. package/dist/src/cli/commands/doctor/flow.js.map +1 -0
  188. package/dist/src/cli/commands/doctor/format.d.ts +6 -0
  189. package/dist/src/cli/commands/doctor/format.js +61 -0
  190. package/dist/src/cli/commands/doctor/format.js.map +1 -0
  191. package/dist/src/cli/commands/doctor/index.js +44 -0
  192. package/dist/src/cli/commands/doctor/index.js.map +1 -0
  193. package/dist/src/cli/commands/doctor/types.d.ts +20 -0
  194. package/dist/src/cli/commands/doctor/types.js +1 -0
  195. package/dist/src/cli/commands/extension.js +10 -0
  196. package/dist/src/cli/commands/extension.js.map +1 -1
  197. package/dist/src/cli/commands/init.js +1 -2
  198. package/dist/src/cli/commands/init.js.map +1 -1
  199. package/dist/src/cli/commands/session/utils.js.map +1 -1
  200. package/dist/src/cli/commands/update.d.ts +1 -0
  201. package/dist/src/cli/commands/update.js +171 -0
  202. package/dist/src/cli/commands/update.js.map +1 -0
  203. package/dist/src/cli/index.d.ts +2 -2
  204. package/dist/src/cli/index.js +4 -2
  205. package/dist/src/cli/index.js.map +1 -1
  206. package/dist/src/cli/utils/init-workspace.js +1 -1
  207. package/dist/src/config/index.d.ts +1 -0
  208. package/dist/src/config/index.js +4 -3
  209. package/dist/src/config/index.js.map +1 -1
  210. package/dist/src/config/loader.js +1 -1
  211. package/dist/src/config/models-json.d.ts +15 -15
  212. package/dist/src/config/paths.js.map +1 -1
  213. package/dist/src/config/profile.js +1 -1
  214. package/dist/src/config/runtime-overrides.d.ts +8 -0
  215. package/dist/src/config/runtime-overrides.js +40 -0
  216. package/dist/src/config/runtime-overrides.js.map +1 -0
  217. package/dist/src/config/schema.d.ts +34 -104
  218. package/dist/src/config/schema.js +18 -39
  219. package/dist/src/config/schema.js.map +1 -1
  220. package/dist/src/cron/persistence.js +1 -1
  221. package/dist/src/cron/run-log-store.js +1 -1
  222. package/dist/src/daemon/launchd.js +2 -2
  223. package/dist/src/daemon/launchd.js.map +1 -1
  224. package/dist/src/daemon/systemd.js +2 -2
  225. package/dist/src/daemon/systemd.js.map +1 -1
  226. package/dist/src/extensions/health.js +1 -1
  227. package/dist/src/extensions/loader.d.ts +1 -1
  228. package/dist/src/extensions/loader.js +5 -8
  229. package/dist/src/extensions/loader.js.map +1 -1
  230. package/dist/src/extensions/lockfile.js +1 -1
  231. package/dist/src/extensions/sdk/index.js +6 -1
  232. package/dist/src/extensions/sdk/index.js.map +1 -0
  233. package/dist/src/gateway/agents-admin.js +1 -1
  234. package/dist/src/gateway/agents-admin.js.map +1 -1
  235. package/dist/src/gateway/hono/lib/static-ui.js +1 -1
  236. package/dist/src/gateway/hono/oauth.js +1 -1
  237. package/dist/src/gateway/hono/routes/config.js +1 -1
  238. package/dist/src/gateway/hono/routes/doctor.d.ts +3 -0
  239. package/dist/src/gateway/hono/routes/doctor.js +35 -0
  240. package/dist/src/gateway/hono/routes/doctor.js.map +1 -0
  241. package/dist/src/gateway/hono/routes/index.js +4 -0
  242. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  243. package/dist/src/gateway/hono/routes/models.js +64 -11
  244. package/dist/src/gateway/hono/routes/models.js.map +1 -1
  245. package/dist/src/gateway/hono/routes/public-gateway.js +10 -0
  246. package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
  247. package/dist/src/gateway/hono/routes/update.d.ts +3 -0
  248. package/dist/src/gateway/hono/routes/update.js +141 -0
  249. package/dist/src/gateway/hono/routes/update.js.map +1 -0
  250. package/dist/src/gateway/hono/routes/workspace.js +82 -2
  251. package/dist/src/gateway/hono/routes/workspace.js.map +1 -1
  252. package/dist/src/gateway/lock.js +1 -1
  253. package/dist/src/gateway/ports.js +98 -3
  254. package/dist/src/gateway/ports.js.map +1 -1
  255. package/dist/src/gateway/service.d.ts +1 -4
  256. package/dist/src/gateway/service.js +13 -20
  257. package/dist/src/gateway/service.js.map +1 -1
  258. package/dist/src/gateway/workspace-fs-file-list.d.ts +5 -0
  259. package/dist/src/gateway/workspace-fs-file-list.js +56 -0
  260. package/dist/src/gateway/workspace-fs-file-list.js.map +1 -0
  261. package/dist/src/gateway/workspace-heartbeat-path.js +1 -1
  262. package/dist/src/gateway/workspace-ripgrep.d.ts +5 -0
  263. package/dist/src/gateway/workspace-ripgrep.js +88 -4
  264. package/dist/src/gateway/workspace-ripgrep.js.map +1 -1
  265. package/dist/src/infra/update-channels.d.ts +14 -0
  266. package/dist/src/infra/update-channels.js +30 -0
  267. package/dist/src/infra/update-channels.js.map +1 -0
  268. package/dist/src/infra/update-check.d.ts +53 -0
  269. package/dist/src/infra/update-check.js +155 -0
  270. package/dist/src/infra/update-check.js.map +1 -0
  271. package/dist/src/infra/update-runner.d.ts +18 -0
  272. package/dist/src/infra/update-runner.js +112 -0
  273. package/dist/src/infra/update-runner.js.map +1 -0
  274. package/dist/src/infra/update-startup.d.ts +20 -0
  275. package/dist/src/infra/update-startup.js +246 -0
  276. package/dist/src/infra/update-startup.js.map +1 -0
  277. package/dist/src/providers/extension-stream-bridge.d.ts +3 -0
  278. package/dist/src/providers/extension-stream-bridge.js +239 -0
  279. package/dist/src/providers/extension-stream-bridge.js.map +1 -0
  280. package/dist/src/providers/index.d.ts +7 -2
  281. package/dist/src/providers/index.js +77 -14
  282. package/dist/src/providers/index.js.map +1 -1
  283. package/dist/src/providers/model-registry.js +1 -1
  284. package/dist/src/providers/plugin-registry.js +92 -87
  285. package/dist/src/providers/plugin-registry.js.map +1 -1
  286. package/dist/src/routing/bindings.js +1 -1
  287. package/dist/src/routing/index.d.ts +1 -1
  288. package/dist/src/routing/index.js +2 -2
  289. package/dist/src/routing/index.js.map +1 -1
  290. package/dist/src/routing/resolve-route.js +1 -1
  291. package/dist/src/routing/session-key.d.ts +0 -5
  292. package/dist/src/routing/session-key.js +1 -27
  293. package/dist/src/routing/session-key.js.map +1 -1
  294. package/dist/src/session/chat-export.d.ts +5 -0
  295. package/dist/src/session/chat-export.js +35 -0
  296. package/dist/src/session/chat-export.js.map +1 -0
  297. package/dist/src/session/config-store.js +1 -1
  298. package/dist/src/session/manager.d.ts +1 -1
  299. package/dist/src/session/manager.js +2 -2
  300. package/dist/src/session/manager.js.map +1 -1
  301. package/dist/src/session/store.d.ts +1 -1
  302. package/dist/src/session/store.js +3 -7
  303. package/dist/src/session/store.js.map +1 -1
  304. package/dist/src/session/types.d.ts +0 -10
  305. package/dist/src/session/types.js.map +1 -1
  306. package/dist/src/utils/logger/audit.js +1 -1
  307. package/dist/src/utils/logger/log-store.js +1 -1
  308. package/dist/src/utils/logger/rotation.js +1 -1
  309. package/dist/src/voice/tts/audio.js +1 -1
  310. package/package.json +2 -2
  311. package/dist/gateway/static/root/assets/agents-B6s2BvpH.js.map +0 -1
  312. package/dist/gateway/static/root/assets/attachment-load-6pRlDPZ8.js +0 -1
  313. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js +0 -16
  314. package/dist/gateway/static/root/assets/index-DBZ5eXW5.js.map +0 -1
  315. package/dist/gateway/static/root/assets/index-KsVMH-Jo.css +0 -2
  316. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js +0 -2
  317. package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js.map +0 -1
  318. package/dist/gateway/static/root/assets/page-header-store-HcRZK5CZ.js +0 -2
  319. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js +0 -2
  320. package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js.map +0 -1
  321. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js +0 -2
  322. package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js.map +0 -1
  323. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js +0 -2
  324. package/dist/gateway/static/root/assets/url-QmwQTJ-j.js.map +0 -1
  325. package/dist/src/acp/commands.d.ts +0 -11
  326. package/dist/src/acp/commands.js +0 -17
  327. package/dist/src/acp/commands.js.map +0 -1
  328. package/dist/src/acp/control-plane/identity-reconcile.d.ts +0 -36
  329. package/dist/src/acp/control-plane/identity-reconcile.js +0 -124
  330. package/dist/src/acp/control-plane/identity-reconcile.js.map +0 -1
  331. package/dist/src/acp/control-plane/index.d.ts +0 -10
  332. package/dist/src/acp/control-plane/index.js +0 -6
  333. package/dist/src/acp/control-plane/manager.d.ts +0 -86
  334. package/dist/src/acp/control-plane/manager.js +0 -502
  335. package/dist/src/acp/control-plane/manager.js.map +0 -1
  336. package/dist/src/acp/control-plane/manager.types.d.ts +0 -125
  337. package/dist/src/acp/control-plane/manager.types.js +0 -14
  338. package/dist/src/acp/control-plane/manager.types.js.map +0 -1
  339. package/dist/src/acp/control-plane/manager.utils.d.ts +0 -29
  340. package/dist/src/acp/control-plane/manager.utils.js +0 -46
  341. package/dist/src/acp/control-plane/manager.utils.js.map +0 -1
  342. package/dist/src/acp/control-plane/runtime-cache-manager.d.ts +0 -49
  343. package/dist/src/acp/control-plane/runtime-cache-manager.js +0 -155
  344. package/dist/src/acp/control-plane/runtime-cache-manager.js.map +0 -1
  345. package/dist/src/acp/control-plane/runtime-cache.d.ts +0 -45
  346. package/dist/src/acp/control-plane/runtime-cache.js +0 -58
  347. package/dist/src/acp/control-plane/runtime-cache.js.map +0 -1
  348. package/dist/src/acp/control-plane/runtime-options.d.ts +0 -30
  349. package/dist/src/acp/control-plane/runtime-options.js +0 -92
  350. package/dist/src/acp/control-plane/runtime-options.js.map +0 -1
  351. package/dist/src/acp/control-plane/session-actor-queue.d.ts +0 -22
  352. package/dist/src/acp/control-plane/session-actor-queue.js +0 -70
  353. package/dist/src/acp/control-plane/session-actor-queue.js.map +0 -1
  354. package/dist/src/acp/control-plane/session-lifecycle-manager.d.ts +0 -59
  355. package/dist/src/acp/control-plane/session-lifecycle-manager.js +0 -209
  356. package/dist/src/acp/control-plane/session-lifecycle-manager.js.map +0 -1
  357. package/dist/src/acp/control-plane/session-store.d.ts +0 -39
  358. package/dist/src/acp/control-plane/session-store.js +0 -149
  359. package/dist/src/acp/control-plane/session-store.js.map +0 -1
  360. package/dist/src/acp/control-plane/turn-manager.d.ts +0 -40
  361. package/dist/src/acp/control-plane/turn-manager.js +0 -134
  362. package/dist/src/acp/control-plane/turn-manager.js.map +0 -1
  363. package/dist/src/acp/event-mapper.d.ts +0 -48
  364. package/dist/src/acp/event-mapper.js +0 -94
  365. package/dist/src/acp/event-mapper.js.map +0 -1
  366. package/dist/src/acp/index.d.ts +0 -10
  367. package/dist/src/acp/index.js +0 -5
  368. package/dist/src/acp/meta.d.ts +0 -15
  369. package/dist/src/acp/meta.js +0 -36
  370. package/dist/src/acp/meta.js.map +0 -1
  371. package/dist/src/acp/routing-integration.d.ts +0 -37
  372. package/dist/src/acp/routing-integration.js +0 -58
  373. package/dist/src/acp/routing-integration.js.map +0 -1
  374. package/dist/src/acp/runtime/backends/index.d.ts +0 -4
  375. package/dist/src/acp/runtime/backends/index.js +0 -2
  376. package/dist/src/acp/runtime/backends/local.d.ts +0 -136
  377. package/dist/src/acp/runtime/backends/local.js +0 -603
  378. package/dist/src/acp/runtime/backends/local.js.map +0 -1
  379. package/dist/src/acp/runtime/error-text.d.ts +0 -16
  380. package/dist/src/acp/runtime/error-text.js +0 -40
  381. package/dist/src/acp/runtime/error-text.js.map +0 -1
  382. package/dist/src/acp/runtime/errors.d.ts +0 -31
  383. package/dist/src/acp/runtime/errors.js +0 -47
  384. package/dist/src/acp/runtime/errors.js.map +0 -1
  385. package/dist/src/acp/runtime/index.d.ts +0 -7
  386. package/dist/src/acp/runtime/index.js +0 -4
  387. package/dist/src/acp/runtime/registry.d.ts +0 -35
  388. package/dist/src/acp/runtime/registry.js +0 -85
  389. package/dist/src/acp/runtime/registry.js.map +0 -1
  390. package/dist/src/acp/runtime/session-identity.d.ts +0 -35
  391. package/dist/src/acp/runtime/session-identity.js +0 -134
  392. package/dist/src/acp/runtime/session-identity.js.map +0 -1
  393. package/dist/src/acp/runtime/types.d.ts +0 -214
  394. package/dist/src/acp/secret-file.d.ts +0 -7
  395. package/dist/src/acp/secret-file.js +0 -19
  396. package/dist/src/acp/secret-file.js.map +0 -1
  397. package/dist/src/acp/server.d.ts +0 -48
  398. package/dist/src/acp/server.js +0 -300
  399. package/dist/src/acp/server.js.map +0 -1
  400. package/dist/src/acp/session.d.ts +0 -29
  401. package/dist/src/acp/session.js +0 -30
  402. package/dist/src/acp/session.js.map +0 -1
  403. package/dist/src/acp/types.d.ts +0 -39
  404. package/dist/src/acp/types.js +0 -13
  405. package/dist/src/acp/types.js.map +0 -1
  406. package/dist/src/agent/image/describe-images.d.ts +0 -18
  407. package/dist/src/agent/image/describe-images.js +0 -19
  408. package/dist/src/agent/image/describe-images.js.map +0 -1
  409. package/dist/src/cli/commands/acp.d.ts +0 -4
  410. package/dist/src/cli/commands/acp.js +0 -200
  411. package/dist/src/cli/commands/acp.js.map +0 -1
  412. /package/dist/src/{acp/runtime/types.js → cli/commands/doctor/index.d.ts} +0 -0
@@ -1,149 +0,0 @@
1
- import { createLogger } from "../../utils/logger/index.js";
2
- import { init_logger } from "../../utils/logger.js";
3
- import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "../../agent/agent-scope.js";
4
- import { init_loader, loadConfig } from "../../config/loader.js";
5
- import { join } from "path";
6
- import { existsSync } from "fs";
7
- import { mkdir, readFile, writeFile } from "fs/promises";
8
- //#region src/acp/control-plane/session-store.ts
9
- /**
10
- * ACP Session Store
11
- *
12
- * File-based persistence for ACP session metadata under the agent home `sessions/` tree.
13
- */
14
- init_logger();
15
- init_loader();
16
- init_agent_scope();
17
- const log = createLogger("AcpSessionStore");
18
- const ACP_SESSIONS_INDEX_FILE = "acp-sessions.json";
19
- /** ACP Session Store */
20
- var AcpSessionStore = class {
21
- indexFile;
22
- sessionsDir;
23
- indexCache = null;
24
- indexDirty = false;
25
- constructor(agentHomeDir) {
26
- this.sessionsDir = join(agentHomeDir, "sessions");
27
- this.indexFile = join(this.sessionsDir, ACP_SESSIONS_INDEX_FILE);
28
- }
29
- /** Initialize the store */
30
- async initialize() {
31
- await mkdir(this.sessionsDir, { recursive: true });
32
- log.info({ dir: this.sessionsDir }, "ACP session store initialized");
33
- }
34
- /** Load session entry from store */
35
- async load(sessionKey) {
36
- const key = this.normalizeSessionKey(sessionKey);
37
- if (!key) return null;
38
- if (!this.indexCache) await this.loadIndex();
39
- let entry = this.indexCache?.get(key) ?? null;
40
- if (!entry && this.indexCache) {
41
- for (const [cachedKey, cachedEntry] of this.indexCache) if (cachedKey.toLowerCase() === key.toLowerCase()) {
42
- entry = cachedEntry;
43
- break;
44
- }
45
- }
46
- return entry ?? null;
47
- }
48
- /** Save session entry to store */
49
- async save(sessionKey, entry) {
50
- const key = this.normalizeSessionKey(sessionKey);
51
- if (!key) {
52
- log.warn({ sessionKey }, "Invalid session key, skipping save");
53
- return;
54
- }
55
- if (!this.indexCache) await this.loadIndex();
56
- this.indexCache.set(key, {
57
- ...entry,
58
- sessionKey: key
59
- });
60
- this.indexDirty = true;
61
- await this.saveIndex();
62
- }
63
- /** List all session entries */
64
- async list() {
65
- if (!this.indexCache) await this.loadIndex();
66
- return Array.from(this.indexCache?.values() ?? []);
67
- }
68
- /** List all ACP session entries (filter by acp metadata) */
69
- async listAcpSessions() {
70
- return (await this.list()).filter((entry) => entry.acp != null);
71
- }
72
- /** Delete session entry */
73
- async delete(sessionKey) {
74
- const key = this.normalizeSessionKey(sessionKey);
75
- if (!key) return;
76
- if (!this.indexCache) await this.loadIndex();
77
- let foundKey = null;
78
- for (const cachedKey of this.indexCache?.keys() ?? []) if (cachedKey.toLowerCase() === key.toLowerCase()) {
79
- foundKey = cachedKey;
80
- break;
81
- }
82
- if (foundKey) {
83
- this.indexCache.delete(foundKey);
84
- this.indexDirty = true;
85
- await this.saveIndex();
86
- }
87
- }
88
- /** Clear all ACP sessions */
89
- async clear() {
90
- this.indexCache = /* @__PURE__ */ new Map();
91
- this.indexDirty = true;
92
- await this.saveIndex();
93
- }
94
- /** Normalize session key */
95
- normalizeSessionKey(sessionKey) {
96
- return sessionKey.trim().toLowerCase();
97
- }
98
- /** Load index from disk */
99
- async loadIndex() {
100
- try {
101
- if (!existsSync(this.indexFile)) {
102
- this.indexCache = /* @__PURE__ */ new Map();
103
- return;
104
- }
105
- const data = await readFile(this.indexFile, "utf-8");
106
- const parsed = JSON.parse(data);
107
- this.indexCache = /* @__PURE__ */ new Map();
108
- for (const [key, entry] of Object.entries(parsed)) if (entry.acp) this.indexCache.set(key, entry);
109
- } catch (error) {
110
- const em = error instanceof Error ? error.message : String(error);
111
- log.warn({
112
- err: error,
113
- path: this.indexFile,
114
- errorMessage: em
115
- }, `ACP session index load failed (starting empty): ${em}`);
116
- this.indexCache = /* @__PURE__ */ new Map();
117
- }
118
- }
119
- /** Save index to disk */
120
- async saveIndex() {
121
- if (!this.indexDirty || !this.indexCache) return;
122
- try {
123
- const obj = {};
124
- for (const [key, entry] of this.indexCache) obj[key] = entry;
125
- await writeFile(this.indexFile, JSON.stringify(obj, null, 2), "utf-8");
126
- this.indexDirty = false;
127
- } catch (error) {
128
- const em = error instanceof Error ? error.message : String(error);
129
- log.error({
130
- err: error,
131
- path: this.indexFile,
132
- errorMessage: em
133
- }, `Failed to save ACP session index: ${em}`);
134
- throw error;
135
- }
136
- }
137
- };
138
- /** Default agent home for ACP persistence (matches main session store agent id). */
139
- function resolveAcpAgentHome(cfg) {
140
- return resolveAgentHomeDir(cfg, resolveDefaultAgentId(cfg));
141
- }
142
- /** Construct store using loaded config (singleton-friendly). */
143
- function createDefaultAcpSessionStore() {
144
- return new AcpSessionStore(resolveAcpAgentHome(loadConfig()));
145
- }
146
- //#endregion
147
- export { AcpSessionStore, createDefaultAcpSessionStore, resolveAcpAgentHome };
148
-
149
- //# sourceMappingURL=session-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.js","names":[],"sources":["../../../../src/acp/control-plane/session-store.ts"],"sourcesContent":["/**\n * ACP Session Store\n *\n * File-based persistence for ACP session metadata under the agent home `sessions/` tree.\n */\n\nimport { readFile, writeFile, mkdir } from 'fs/promises';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\nimport { createLogger } from '../../utils/logger.js';\nimport type { Config } from '../../config/schema.js';\nimport { loadConfig } from '../../config/loader.js';\nimport { resolveAgentHomeDir, resolveDefaultAgentId } from '../../agent/agent-scope.js';\nimport type { SessionEntry } from './manager.types.js';\n\nconst log = createLogger('AcpSessionStore');\n\nconst ACP_SESSIONS_INDEX_FILE = 'acp-sessions.json';\n\n/** ACP Session Store */\nexport class AcpSessionStore {\n private indexFile: string;\n private sessionsDir: string;\n private indexCache: Map<string, SessionEntry> | null = null;\n private indexDirty = false;\n\n constructor(agentHomeDir: string) {\n this.sessionsDir = join(agentHomeDir, 'sessions');\n this.indexFile = join(this.sessionsDir, ACP_SESSIONS_INDEX_FILE);\n }\n\n /** Initialize the store */\n async initialize(): Promise<void> {\n await mkdir(this.sessionsDir, { recursive: true });\n log.info({ dir: this.sessionsDir }, 'ACP session store initialized');\n }\n\n /** Load session entry from store */\n async load(sessionKey: string): Promise<SessionEntry | null> {\n const key = this.normalizeSessionKey(sessionKey);\n if (!key) {\n return null;\n }\n\n // Load index if not cached\n if (!this.indexCache) {\n await this.loadIndex();\n }\n\n // Try exact match first\n let entry = this.indexCache?.get(key) ?? null;\n\n // Try case-insensitive match\n if (!entry && this.indexCache) {\n for (const [cachedKey, cachedEntry] of this.indexCache) {\n if (cachedKey.toLowerCase() === key.toLowerCase()) {\n entry = cachedEntry;\n break;\n }\n }\n }\n\n return entry ?? null;\n }\n\n /** Save session entry to store */\n async save(sessionKey: string, entry: SessionEntry): Promise<void> {\n const key = this.normalizeSessionKey(sessionKey);\n if (!key) {\n log.warn({ sessionKey }, 'Invalid session key, skipping save');\n return;\n }\n\n // Load index if not cached\n if (!this.indexCache) {\n await this.loadIndex();\n }\n\n // Update cache\n this.indexCache!.set(key, {\n ...entry,\n sessionKey: key,\n });\n this.indexDirty = true;\n\n // Persist to disk\n await this.saveIndex();\n }\n\n /** List all session entries */\n async list(): Promise<SessionEntry[]> {\n // Load index if not cached\n if (!this.indexCache) {\n await this.loadIndex();\n }\n\n return Array.from(this.indexCache?.values() ?? []);\n }\n\n /** List all ACP session entries (filter by acp metadata) */\n async listAcpSessions(): Promise<SessionEntry[]> {\n const all = await this.list();\n return all.filter((entry) => entry.acp != null);\n }\n\n /** Delete session entry */\n async delete(sessionKey: string): Promise<void> {\n const key = this.normalizeSessionKey(sessionKey);\n if (!key) {\n return;\n }\n\n // Load index if not cached\n if (!this.indexCache) {\n await this.loadIndex();\n }\n\n // Find and remove the entry (case-insensitive)\n let foundKey: string | null = null;\n for (const cachedKey of this.indexCache?.keys() ?? []) {\n if (cachedKey.toLowerCase() === key.toLowerCase()) {\n foundKey = cachedKey;\n break;\n }\n }\n\n if (foundKey) {\n this.indexCache!.delete(foundKey);\n this.indexDirty = true;\n await this.saveIndex();\n }\n }\n\n /** Clear all ACP sessions */\n async clear(): Promise<void> {\n this.indexCache = new Map();\n this.indexDirty = true;\n await this.saveIndex();\n }\n\n // ========== Private Methods ==========\n\n /** Normalize session key */\n private normalizeSessionKey(sessionKey: string): string {\n return sessionKey.trim().toLowerCase();\n }\n\n /** Load index from disk */\n private async loadIndex(): Promise<void> {\n try {\n if (!existsSync(this.indexFile)) {\n this.indexCache = new Map();\n return;\n }\n\n const data = await readFile(this.indexFile, 'utf-8');\n const parsed = JSON.parse(data) as Record<string, SessionEntry>;\n\n this.indexCache = new Map();\n for (const [key, entry] of Object.entries(parsed)) {\n if (entry.acp) {\n this.indexCache.set(key, entry);\n }\n }\n } catch (error) {\n const em = error instanceof Error ? error.message : String(error);\n log.warn(\n { err: error, path: this.indexFile, errorMessage: em },\n `ACP session index load failed (starting empty): ${em}`,\n );\n this.indexCache = new Map();\n }\n }\n\n /** Save index to disk */\n private async saveIndex(): Promise<void> {\n if (!this.indexDirty || !this.indexCache) {\n return;\n }\n\n try {\n const obj: Record<string, SessionEntry> = {};\n for (const [key, entry] of this.indexCache) {\n obj[key] = entry;\n }\n await writeFile(this.indexFile, JSON.stringify(obj, null, 2), 'utf-8');\n this.indexDirty = false;\n } catch (error) {\n const em = error instanceof Error ? error.message : String(error);\n log.error({ err: error, path: this.indexFile, errorMessage: em }, `Failed to save ACP session index: ${em}`);\n throw error;\n }\n }\n}\n\n/** Default agent home for ACP persistence (matches main session store agent id). */\nexport function resolveAcpAgentHome(cfg: Config): string {\n return resolveAgentHomeDir(cfg, resolveDefaultAgentId(cfg));\n}\n\n/** Construct store using loaded config (singleton-friendly). */\nexport function createDefaultAcpSessionStore(): AcpSessionStore {\n const c = loadConfig();\n const home = resolveAcpAgentHome(c);\n return new AcpSessionStore(home);\n}\n"],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Turn Manager
3
- *
4
- * Manages ACP turn execution, cancellation, and latency tracking.
5
- */
6
- import type { AcpRuntime, AcpRuntimeHandle, SessionAcpMeta } from "../runtime/types.js";
7
- import type { AcpRunTurnInput, ActiveTurnState, TurnLatencyStats } from "./manager.types.js";
8
- export declare class TurnManager {
9
- private readonly activeTurnBySession;
10
- private readonly turnLatencyStats;
11
- /** Get active turn for session */
12
- getActiveTurn(sessionKey: string): ActiveTurnState | undefined;
13
- /** Check if session has active turn */
14
- hasActiveTurn(sessionKey: string): boolean;
15
- /** Execute a turn */
16
- executeTurn(params: {
17
- input: AcpRunTurnInput;
18
- runtime: {
19
- runtime: AcpRuntime;
20
- handle: AcpRuntimeHandle;
21
- meta: SessionAcpMeta;
22
- };
23
- onStateChange: (state: SessionAcpMeta["state"], lastError?: string) => Promise<void>;
24
- }): Promise<void>;
25
- /** Cancel active turn */
26
- cancelTurn(params: {
27
- sessionKey: string;
28
- runtime: {
29
- runtime: AcpRuntime;
30
- handle: AcpRuntimeHandle;
31
- };
32
- reason?: string;
33
- }): Promise<boolean>;
34
- /** Get latency stats snapshot */
35
- getLatencyStats(): TurnLatencyStats;
36
- /** Get active turn count */
37
- getActiveTurnCount(): number;
38
- private recordCompletion;
39
- private normalizeErrorCode;
40
- }
@@ -1,134 +0,0 @@
1
- import { AcpRuntimeError, toAcpRuntimeError, withAcpRuntimeErrorBoundary } from "../runtime/errors.js";
2
- import { normalizeActorKey, normalizeSessionKey } from "./manager.utils.js";
3
- //#region src/acp/control-plane/turn-manager.ts
4
- /**
5
- * Turn Manager
6
- *
7
- * Manages ACP turn execution, cancellation, and latency tracking.
8
- */
9
- var TurnManager = class {
10
- activeTurnBySession = /* @__PURE__ */ new Map();
11
- turnLatencyStats = {
12
- completed: 0,
13
- failed: 0,
14
- totalMs: 0,
15
- maxMs: 0
16
- };
17
- /** Get active turn for session */
18
- getActiveTurn(sessionKey) {
19
- return this.activeTurnBySession.get(normalizeActorKey(sessionKey));
20
- }
21
- /** Check if session has active turn */
22
- hasActiveTurn(sessionKey) {
23
- return this.activeTurnBySession.has(normalizeActorKey(sessionKey));
24
- }
25
- /** Execute a turn */
26
- async executeTurn(params) {
27
- const { input, runtime: { runtime, handle, meta }, onStateChange } = params;
28
- const sessionKey = normalizeSessionKey(input.sessionKey);
29
- if (!sessionKey) throw new AcpRuntimeError("ACP_SESSION_INIT_FAILED", "ACP session key is required.");
30
- const turnStartedAt = Date.now();
31
- const actorKey = normalizeActorKey(sessionKey);
32
- await onStateChange("running");
33
- const internalAbortController = new AbortController();
34
- const onCallerAbort = () => {
35
- internalAbortController.abort();
36
- };
37
- if (input.signal?.aborted) internalAbortController.abort();
38
- else if (input.signal) input.signal.addEventListener("abort", onCallerAbort, { once: true });
39
- const activeTurn = {
40
- runtime,
41
- handle,
42
- abortController: internalAbortController
43
- };
44
- this.activeTurnBySession.set(actorKey, activeTurn);
45
- let streamError = null;
46
- try {
47
- const combinedSignal = input.signal && typeof AbortSignal.any === "function" ? AbortSignal.any([input.signal, internalAbortController.signal]) : internalAbortController.signal;
48
- for await (const event of runtime.runTurn({
49
- handle,
50
- text: input.text,
51
- attachments: input.attachments,
52
- mode: input.mode,
53
- requestId: input.requestId,
54
- signal: combinedSignal
55
- })) {
56
- if (event.type === "error") streamError = new AcpRuntimeError(this.normalizeErrorCode(event.code), event.message?.trim() || "ACP turn failed before completion.");
57
- if (input.onEvent) await input.onEvent(event);
58
- }
59
- if (streamError) throw streamError;
60
- this.recordCompletion({ startedAt: turnStartedAt });
61
- await onStateChange("idle");
62
- } catch (error) {
63
- const acpError = toAcpRuntimeError({
64
- error,
65
- fallbackCode: "ACP_TURN_FAILED",
66
- fallbackMessage: "ACP turn failed before completion."
67
- });
68
- this.recordCompletion({
69
- startedAt: turnStartedAt,
70
- errorCode: acpError.code
71
- });
72
- await onStateChange("error", acpError.message);
73
- throw acpError;
74
- } finally {
75
- if (input.signal) input.signal.removeEventListener("abort", onCallerAbort);
76
- if (this.activeTurnBySession.get(actorKey) === activeTurn) this.activeTurnBySession.delete(actorKey);
77
- if (meta.mode === "oneshot") try {
78
- await runtime.close({
79
- handle,
80
- reason: "oneshot-complete"
81
- });
82
- } catch {}
83
- }
84
- }
85
- /** Cancel active turn */
86
- async cancelTurn(params) {
87
- const { sessionKey, runtime: { runtime }, reason } = params;
88
- const actorKey = normalizeActorKey(sessionKey);
89
- const activeTurn = this.activeTurnBySession.get(actorKey);
90
- if (activeTurn) {
91
- activeTurn.abortController.abort();
92
- if (!activeTurn.cancelPromise) activeTurn.cancelPromise = runtime.cancel({
93
- handle: activeTurn.handle,
94
- reason
95
- });
96
- await withAcpRuntimeErrorBoundary({
97
- run: async () => await activeTurn.cancelPromise,
98
- fallbackCode: "ACP_TURN_FAILED",
99
- fallbackMessage: "ACP cancel failed before completion."
100
- });
101
- return true;
102
- }
103
- return false;
104
- }
105
- /** Get latency stats snapshot */
106
- getLatencyStats() {
107
- return { ...this.turnLatencyStats };
108
- }
109
- /** Get active turn count */
110
- getActiveTurnCount() {
111
- return this.activeTurnBySession.size;
112
- }
113
- recordCompletion(params) {
114
- const durationMs = Math.max(0, Date.now() - params.startedAt);
115
- this.turnLatencyStats.totalMs += durationMs;
116
- this.turnLatencyStats.maxMs = Math.max(this.turnLatencyStats.maxMs, durationMs);
117
- if (params.errorCode) this.turnLatencyStats.failed += 1;
118
- else this.turnLatencyStats.completed += 1;
119
- }
120
- normalizeErrorCode(code) {
121
- if (code && [
122
- "ACP_SESSION_INIT_FAILED",
123
- "ACP_TURN_FAILED",
124
- "ACP_BACKEND_MISSING",
125
- "ACP_BACKEND_UNAVAILABLE",
126
- "ACP_BACKEND_UNSUPPORTED_CONTROL"
127
- ].includes(code)) return code;
128
- return "ACP_TURN_FAILED";
129
- }
130
- };
131
- //#endregion
132
- export { TurnManager };
133
-
134
- //# sourceMappingURL=turn-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"turn-manager.js","names":[],"sources":["../../../../src/acp/control-plane/turn-manager.ts"],"sourcesContent":["/**\n * Turn Manager\n * \n * Manages ACP turn execution, cancellation, and latency tracking.\n */\n\nimport { AcpRuntimeError, toAcpRuntimeError, withAcpRuntimeErrorBoundary } from \"../runtime/errors.js\";\nimport type { AcpRuntime, AcpRuntimeHandle, SessionAcpMeta } from \"../runtime/types.js\";\nimport type { AcpRunTurnInput, ActiveTurnState, TurnLatencyStats } from \"./manager.types.js\";\nimport { normalizeActorKey, normalizeSessionKey } from \"./manager.utils.js\";\n\nexport class TurnManager {\n private readonly activeTurnBySession = new Map<string, ActiveTurnState>();\n private readonly turnLatencyStats: TurnLatencyStats = {\n completed: 0,\n failed: 0,\n totalMs: 0,\n maxMs: 0,\n };\n\n /** Get active turn for session */\n getActiveTurn(sessionKey: string): ActiveTurnState | undefined {\n return this.activeTurnBySession.get(normalizeActorKey(sessionKey));\n }\n\n /** Check if session has active turn */\n hasActiveTurn(sessionKey: string): boolean {\n return this.activeTurnBySession.has(normalizeActorKey(sessionKey));\n }\n\n /** Execute a turn */\n async executeTurn(params: {\n input: AcpRunTurnInput;\n runtime: {\n runtime: AcpRuntime;\n handle: AcpRuntimeHandle;\n meta: SessionAcpMeta;\n };\n onStateChange: (state: SessionAcpMeta[\"state\"], lastError?: string) => Promise<void>;\n }): Promise<void> {\n const { input, runtime: { runtime, handle, meta }, onStateChange } = params;\n const sessionKey = normalizeSessionKey(input.sessionKey);\n if (!sessionKey) {\n throw new AcpRuntimeError(\"ACP_SESSION_INIT_FAILED\", \"ACP session key is required.\");\n }\n\n const turnStartedAt = Date.now();\n const actorKey = normalizeActorKey(sessionKey);\n\n await onStateChange(\"running\");\n\n const internalAbortController = new AbortController();\n const onCallerAbort = () => {\n internalAbortController.abort();\n };\n\n if (input.signal?.aborted) {\n internalAbortController.abort();\n } else if (input.signal) {\n input.signal.addEventListener(\"abort\", onCallerAbort, { once: true });\n }\n\n const activeTurn: ActiveTurnState = {\n runtime,\n handle,\n abortController: internalAbortController,\n };\n this.activeTurnBySession.set(actorKey, activeTurn);\n\n let streamError: AcpRuntimeError | null = null;\n\n try {\n const combinedSignal =\n input.signal && typeof AbortSignal.any === \"function\"\n ? AbortSignal.any([input.signal, internalAbortController.signal])\n : internalAbortController.signal;\n\n for await (const event of runtime.runTurn({\n handle,\n text: input.text,\n attachments: input.attachments,\n mode: input.mode,\n requestId: input.requestId,\n signal: combinedSignal,\n })) {\n if (event.type === \"error\") {\n streamError = new AcpRuntimeError(\n this.normalizeErrorCode(event.code),\n event.message?.trim() || \"ACP turn failed before completion.\",\n );\n }\n if (input.onEvent) {\n await input.onEvent(event);\n }\n }\n\n if (streamError) {\n throw streamError;\n }\n\n this.recordCompletion({ startedAt: turnStartedAt });\n await onStateChange(\"idle\");\n } catch (error) {\n const acpError = toAcpRuntimeError({\n error,\n fallbackCode: \"ACP_TURN_FAILED\",\n fallbackMessage: \"ACP turn failed before completion.\",\n });\n\n this.recordCompletion({\n startedAt: turnStartedAt,\n errorCode: acpError.code,\n });\n\n await onStateChange(\"error\", acpError.message);\n throw acpError;\n } finally {\n if (input.signal) {\n input.signal.removeEventListener(\"abort\", onCallerAbort);\n }\n if (this.activeTurnBySession.get(actorKey) === activeTurn) {\n this.activeTurnBySession.delete(actorKey);\n }\n\n // Auto-close oneshot sessions\n if (meta.mode === \"oneshot\") {\n try {\n await runtime.close({ handle, reason: \"oneshot-complete\" });\n } catch {\n // Ignore close errors\n }\n }\n }\n }\n\n /** Cancel active turn */\n async cancelTurn(params: {\n sessionKey: string;\n runtime: {\n runtime: AcpRuntime;\n handle: AcpRuntimeHandle;\n };\n reason?: string;\n }): Promise<boolean> {\n const { sessionKey, runtime: { runtime }, reason } = params;\n const actorKey = normalizeActorKey(sessionKey);\n const activeTurn = this.activeTurnBySession.get(actorKey);\n\n if (activeTurn) {\n activeTurn.abortController.abort();\n if (!activeTurn.cancelPromise) {\n activeTurn.cancelPromise = runtime.cancel({ handle: activeTurn.handle, reason });\n }\n await withAcpRuntimeErrorBoundary({\n run: async () => await activeTurn.cancelPromise!,\n fallbackCode: \"ACP_TURN_FAILED\",\n fallbackMessage: \"ACP cancel failed before completion.\",\n });\n return true;\n }\n\n return false;\n }\n\n /** Get latency stats snapshot */\n getLatencyStats(): TurnLatencyStats {\n return { ...this.turnLatencyStats };\n }\n\n /** Get active turn count */\n getActiveTurnCount(): number {\n return this.activeTurnBySession.size;\n }\n\n private recordCompletion(params: {\n startedAt: number;\n errorCode?: AcpRuntimeError[\"code\"];\n }): void {\n const durationMs = Math.max(0, Date.now() - params.startedAt);\n this.turnLatencyStats.totalMs += durationMs;\n this.turnLatencyStats.maxMs = Math.max(this.turnLatencyStats.maxMs, durationMs);\n\n if (params.errorCode) {\n this.turnLatencyStats.failed += 1;\n } else {\n this.turnLatencyStats.completed += 1;\n }\n }\n\n private normalizeErrorCode(code: string | undefined): AcpRuntimeError[\"code\"] {\n const validCodes: AcpRuntimeError[\"code\"][] = [\n \"ACP_SESSION_INIT_FAILED\",\n \"ACP_TURN_FAILED\",\n \"ACP_BACKEND_MISSING\",\n \"ACP_BACKEND_UNAVAILABLE\",\n \"ACP_BACKEND_UNSUPPORTED_CONTROL\",\n ];\n\n if (code && validCodes.includes(code as AcpRuntimeError[\"code\"])) {\n return code as AcpRuntimeError[\"code\"];\n }\n return \"ACP_TURN_FAILED\";\n }\n}\n"],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * ACP Event Mapper
3
- *
4
- * Maps between ACP protocol events and Gateway events.
5
- */
6
- export interface GatewayAttachment {
7
- type: string;
8
- mimeType: string;
9
- content: string;
10
- }
11
- interface ToolCallLocation {
12
- path?: string;
13
- line?: number;
14
- }
15
- /**
16
- * Extract text content from a PromptRequest
17
- */
18
- export declare function extractTextFromPrompt(req: {
19
- text?: string;
20
- attachments?: GatewayAttachment[];
21
- }): string;
22
- /**
23
- * Extract attachments from a PromptRequest
24
- */
25
- export declare function extractAttachmentsFromPrompt(req: {
26
- text?: string;
27
- attachments?: GatewayAttachment[];
28
- }): Array<{
29
- mediaType: string;
30
- data: string;
31
- }>;
32
- /**
33
- * Extract tool call content from a tool call event
34
- */
35
- export declare function extractToolCallContent(input: unknown): Record<string, unknown>;
36
- /**
37
- * Extract tool call locations from input
38
- */
39
- export declare function extractToolCallLocations(input: Record<string, unknown>): ToolCallLocation[];
40
- /**
41
- * Format tool title from tool call
42
- */
43
- export declare function formatToolTitle(name: string, input?: Record<string, unknown>): string;
44
- /**
45
- * Infer tool kind from tool name
46
- */
47
- export declare function inferToolKind(title: string): string;
48
- export {};
@@ -1,94 +0,0 @@
1
- //#region src/acp/event-mapper.ts
2
- const TOOL_LOCATION_PATH_KEYS = [
3
- "path",
4
- "filePath",
5
- "file_path",
6
- "targetPath",
7
- "target_path",
8
- "targetFile",
9
- "target_file",
10
- "sourcePath",
11
- "source_path",
12
- "destinationPath",
13
- "destination_path",
14
- "oldPath",
15
- "old_path",
16
- "newPath",
17
- "new_path",
18
- "outputPath",
19
- "output_path",
20
- "inputPath",
21
- "input_path"
22
- ];
23
- const TOOL_LOCATION_LINE_KEYS = [
24
- "line",
25
- "lineNumber",
26
- "line_number",
27
- "startLine",
28
- "start_line"
29
- ];
30
- /**
31
- * Extract text content from a PromptRequest
32
- */
33
- function extractTextFromPrompt(req) {
34
- return req.text || "";
35
- }
36
- /**
37
- * Extract attachments from a PromptRequest
38
- */
39
- function extractAttachmentsFromPrompt(req) {
40
- if (!req.attachments) return [];
41
- return req.attachments.filter((a) => a.type === "attachment").map((a) => ({
42
- mediaType: a.mimeType,
43
- data: a.content
44
- }));
45
- }
46
- /**
47
- * Extract tool call content from a tool call event
48
- */
49
- function extractToolCallContent(input) {
50
- if (typeof input !== "object" || input === null) return {};
51
- return input;
52
- }
53
- /**
54
- * Extract tool call locations from input
55
- */
56
- function extractToolCallLocations(input) {
57
- const locations = [];
58
- for (const key of TOOL_LOCATION_PATH_KEYS) {
59
- const value = input[key];
60
- if (typeof value === "string" && value) locations.push({ path: value });
61
- }
62
- for (const key of TOOL_LOCATION_LINE_KEYS) {
63
- const value = input[key];
64
- if (typeof value === "number") {
65
- const lastLocation = locations[locations.length - 1];
66
- if (lastLocation) lastLocation.line = value;
67
- }
68
- }
69
- return locations;
70
- }
71
- /**
72
- * Format tool title from tool call
73
- */
74
- function formatToolTitle(name, input) {
75
- if (!input) return name;
76
- const nameKey = input.name || input.fileName || input.file_name || input.target;
77
- if (typeof nameKey === "string") return `${name} (${nameKey})`;
78
- return name;
79
- }
80
- /**
81
- * Infer tool kind from tool name
82
- */
83
- function inferToolKind(title) {
84
- const lowerTitle = title.toLowerCase();
85
- if (lowerTitle.includes("read") || lowerTitle.includes("view") || lowerTitle.includes("grep") || lowerTitle.includes("search")) return "read";
86
- if (lowerTitle.includes("write") || lowerTitle.includes("edit") || lowerTitle.includes("create") || lowerTitle.includes("str_replace")) return "write";
87
- if (lowerTitle.includes("bash") || lowerTitle.includes("shell") || lowerTitle.includes("cmd") || lowerTitle.includes("run")) return "background";
88
- if (lowerTitle.includes("web") || lowerTitle.includes("fetch") || lowerTitle.includes("goto")) return "browser";
89
- return "interactive";
90
- }
91
- //#endregion
92
- export { extractAttachmentsFromPrompt, extractTextFromPrompt, extractToolCallContent, extractToolCallLocations, formatToolTitle, inferToolKind };
93
-
94
- //# sourceMappingURL=event-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-mapper.js","names":[],"sources":["../../../src/acp/event-mapper.ts"],"sourcesContent":["/**\n * ACP Event Mapper\n * \n * Maps between ACP protocol events and Gateway events.\n */\n\nexport interface GatewayAttachment {\n type: string;\n mimeType: string;\n content: string;\n}\n\nconst TOOL_LOCATION_PATH_KEYS = [\n \"path\",\n \"filePath\",\n \"file_path\",\n \"targetPath\",\n \"target_path\",\n \"targetFile\",\n \"target_file\",\n \"sourcePath\",\n \"source_path\",\n \"destinationPath\",\n \"destination_path\",\n \"oldPath\",\n \"old_path\",\n \"newPath\",\n \"new_path\",\n \"outputPath\",\n \"output_path\",\n \"inputPath\",\n \"input_path\",\n] as const;\n\nconst TOOL_LOCATION_LINE_KEYS = [\"line\", \"lineNumber\", \"line_number\", \"startLine\", \"start_line\"] as const;\n\ninterface ToolCallLocation {\n path?: string;\n line?: number;\n}\n\n/**\n * Extract text content from a PromptRequest\n */\nexport function extractTextFromPrompt(req: { text?: string; attachments?: GatewayAttachment[] }): string {\n return req.text || \"\";\n}\n\n/**\n * Extract attachments from a PromptRequest\n */\nexport function extractAttachmentsFromPrompt(\n req: { text?: string; attachments?: GatewayAttachment[] }\n): Array<{ mediaType: string; data: string }> {\n if (!req.attachments) {\n return [];\n }\n \n return req.attachments\n .filter((a) => a.type === \"attachment\")\n .map((a) => ({\n mediaType: a.mimeType,\n data: a.content,\n }));\n}\n\n/**\n * Extract tool call content from a tool call event\n */\nexport function extractToolCallContent(input: unknown): Record<string, unknown> {\n if (typeof input !== \"object\" || input === null) {\n return {};\n }\n return input as Record<string, unknown>;\n}\n\n/**\n * Extract tool call locations from input\n */\nexport function extractToolCallLocations(input: Record<string, unknown>): ToolCallLocation[] {\n const locations: ToolCallLocation[] = [];\n \n // Try to find path-like keys\n for (const key of TOOL_LOCATION_PATH_KEYS) {\n const value = input[key];\n if (typeof value === \"string\" && value) {\n locations.push({ path: value });\n }\n }\n \n // Try to find line number keys\n for (const key of TOOL_LOCATION_LINE_KEYS) {\n const value = input[key];\n if (typeof value === \"number\") {\n const lastLocation = locations[locations.length - 1];\n if (lastLocation) {\n lastLocation.line = value;\n }\n }\n }\n \n return locations;\n}\n\n/**\n * Format tool title from tool call\n */\nexport function formatToolTitle(name: string, input?: Record<string, unknown>): string {\n if (!input) {\n return name;\n }\n \n // Try to extract a meaningful name from input\n const nameKey = input.name || input.fileName || input.file_name || input.target;\n if (typeof nameKey === \"string\") {\n return `${name} (${nameKey})`;\n }\n \n return name;\n}\n\n/**\n * Infer tool kind from tool name\n */\nexport function inferToolKind(title: string): string {\n const lowerTitle = title.toLowerCase();\n \n if (lowerTitle.includes(\"read\") || lowerTitle.includes(\"view\") || lowerTitle.includes(\"grep\") || lowerTitle.includes(\"search\")) {\n return \"read\";\n }\n if (lowerTitle.includes(\"write\") || lowerTitle.includes(\"edit\") || lowerTitle.includes(\"create\") || lowerTitle.includes(\"str_replace\")) {\n return \"write\";\n }\n if (lowerTitle.includes(\"bash\") || lowerTitle.includes(\"shell\") || lowerTitle.includes(\"cmd\") || lowerTitle.includes(\"run\")) {\n return \"background\";\n }\n if (lowerTitle.includes(\"web\") || lowerTitle.includes(\"fetch\") || lowerTitle.includes(\"goto\")) {\n return \"browser\";\n }\n \n return \"interactive\";\n}\n"],"mappings":";AAYA,MAAM,0BAA0B;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,0BAA0B;CAAC;CAAQ;CAAc;CAAe;CAAa;CAAa;;;;AAUhG,SAAgB,sBAAsB,KAAmE;AACvG,QAAO,IAAI,QAAQ;;;;;AAMrB,SAAgB,6BACd,KAC4C;AAC5C,KAAI,CAAC,IAAI,YACP,QAAO,EAAE;AAGX,QAAO,IAAI,YACR,QAAQ,MAAM,EAAE,SAAS,aAAa,CACtC,KAAK,OAAO;EACX,WAAW,EAAE;EACb,MAAM,EAAE;EACT,EAAE;;;;;AAMP,SAAgB,uBAAuB,OAAyC;AAC9E,KAAI,OAAO,UAAU,YAAY,UAAU,KACzC,QAAO,EAAE;AAEX,QAAO;;;;;AAMT,SAAgB,yBAAyB,OAAoD;CAC3F,MAAM,YAAgC,EAAE;AAGxC,MAAK,MAAM,OAAO,yBAAyB;EACzC,MAAM,QAAQ,MAAM;AACpB,MAAI,OAAO,UAAU,YAAY,MAC/B,WAAU,KAAK,EAAE,MAAM,OAAO,CAAC;;AAKnC,MAAK,MAAM,OAAO,yBAAyB;EACzC,MAAM,QAAQ,MAAM;AACpB,MAAI,OAAO,UAAU,UAAU;GAC7B,MAAM,eAAe,UAAU,UAAU,SAAS;AAClD,OAAI,aACF,cAAa,OAAO;;;AAK1B,QAAO;;;;;AAMT,SAAgB,gBAAgB,MAAc,OAAyC;AACrF,KAAI,CAAC,MACH,QAAO;CAIT,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAY,MAAM,aAAa,MAAM;AACzE,KAAI,OAAO,YAAY,SACrB,QAAO,GAAG,KAAK,IAAI,QAAQ;AAG7B,QAAO;;;;;AAMT,SAAgB,cAAc,OAAuB;CACnD,MAAM,aAAa,MAAM,aAAa;AAEtC,KAAI,WAAW,SAAS,OAAO,IAAI,WAAW,SAAS,OAAO,IAAI,WAAW,SAAS,OAAO,IAAI,WAAW,SAAS,SAAS,CAC5H,QAAO;AAET,KAAI,WAAW,SAAS,QAAQ,IAAI,WAAW,SAAS,OAAO,IAAI,WAAW,SAAS,SAAS,IAAI,WAAW,SAAS,cAAc,CACpI,QAAO;AAET,KAAI,WAAW,SAAS,OAAO,IAAI,WAAW,SAAS,QAAQ,IAAI,WAAW,SAAS,MAAM,IAAI,WAAW,SAAS,MAAM,CACzH,QAAO;AAET,KAAI,WAAW,SAAS,MAAM,IAAI,WAAW,SAAS,QAAQ,IAAI,WAAW,SAAS,OAAO,CAC3F,QAAO;AAGT,QAAO"}
@@ -1,10 +0,0 @@
1
- /**
2
- * ACP Main Index
3
- */
4
- export type { AcpRuntime, AcpRuntimeHandle, AcpRuntimeEvent, AcpRuntimeCapabilities, AcpSessionStatus, SessionAcpMeta, AcpSessionResolution, } from "./runtime/types.js";
5
- export { registerAcpRuntimeBackend, unregisterAcpRuntimeBackend, getAcpRuntimeBackend, requireAcpRuntimeBackend, listAcpRuntimeBackends, hasAcpRuntimeBackend, } from "./runtime/registry.js";
6
- export { AcpRuntimeError } from "./runtime/errors.js";
7
- export { AcpSessionManager, getAcpSessionManager, getAcpSessionManagerAsync } from "./control-plane/manager.js";
8
- export type { AcpInitializeSessionInput, AcpRunTurnInput, AcpCloseSessionInput, AcpCloseSessionResult, AcpManagerObservabilitySnapshot, } from "./control-plane/manager.types.js";
9
- export { AcpServer } from "./server.js";
10
- export type { AcpServerOptions, AcpProvenanceMode } from "./types.js";
@@ -1,5 +0,0 @@
1
- import { AcpRuntimeError } from "./runtime/errors.js";
2
- import { getAcpRuntimeBackend, hasAcpRuntimeBackend, listAcpRuntimeBackends, registerAcpRuntimeBackend, requireAcpRuntimeBackend, unregisterAcpRuntimeBackend } from "./runtime/registry.js";
3
- import { AcpSessionManager, getAcpSessionManager, getAcpSessionManagerAsync } from "./control-plane/manager.js";
4
- import { AcpServer } from "./server.js";
5
- export { AcpRuntimeError, AcpServer, AcpSessionManager, getAcpRuntimeBackend, getAcpSessionManager, getAcpSessionManagerAsync, hasAcpRuntimeBackend, listAcpRuntimeBackends, registerAcpRuntimeBackend, requireAcpRuntimeBackend, unregisterAcpRuntimeBackend };
@@ -1,15 +0,0 @@
1
- /**
2
- * ACP Metadata Helpers
3
- */
4
- /**
5
- * Read a boolean value from metadata
6
- */
7
- export declare function readBool(value: unknown, defaultValue?: boolean): boolean;
8
- /**
9
- * Read a number from metadata
10
- */
11
- export declare function readNumber(value: unknown, defaultValue?: number): number;
12
- /**
13
- * Read a string from metadata
14
- */
15
- export declare function readString(value: unknown, defaultValue?: string): string;
@@ -1,36 +0,0 @@
1
- //#region src/acp/meta.ts
2
- /**
3
- * ACP Metadata Helpers
4
- */
5
- /**
6
- * Read a boolean value from metadata
7
- */
8
- function readBool(value, defaultValue = false) {
9
- if (typeof value === "boolean") return value;
10
- if (typeof value === "string") return value.toLowerCase() === "true";
11
- if (typeof value === "number") return value !== 0;
12
- return defaultValue;
13
- }
14
- /**
15
- * Read a number from metadata
16
- */
17
- function readNumber(value, defaultValue = 0) {
18
- if (typeof value === "number") return value;
19
- if (typeof value === "string") {
20
- const parsed = Number(value);
21
- if (!Number.isNaN(parsed)) return parsed;
22
- }
23
- return defaultValue;
24
- }
25
- /**
26
- * Read a string from metadata
27
- */
28
- function readString(value, defaultValue = "") {
29
- if (typeof value === "string") return value;
30
- if (value === void 0 || value === null) return defaultValue;
31
- return String(value);
32
- }
33
- //#endregion
34
- export { readBool, readNumber, readString };
35
-
36
- //# sourceMappingURL=meta.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta.js","names":[],"sources":["../../../src/acp/meta.ts"],"sourcesContent":["/**\n * ACP Metadata Helpers\n */\n\n/**\n * Read a boolean value from metadata\n */\nexport function readBool(value: unknown, defaultValue = false): boolean {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n return value.toLowerCase() === \"true\";\n }\n if (typeof value === \"number\") {\n return value !== 0;\n }\n return defaultValue;\n}\n\n/**\n * Read a number from metadata\n */\nexport function readNumber(value: unknown, defaultValue = 0): number {\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"string\") {\n const parsed = Number(value);\n if (!Number.isNaN(parsed)) {\n return parsed;\n }\n }\n return defaultValue;\n}\n\n/**\n * Read a string from metadata\n */\nexport function readString(value: unknown, defaultValue = \"\"): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === undefined || value === null) {\n return defaultValue;\n }\n return String(value);\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,SAAS,OAAgB,eAAe,OAAgB;AACtE,KAAI,OAAO,UAAU,UACnB,QAAO;AAET,KAAI,OAAO,UAAU,SACnB,QAAO,MAAM,aAAa,KAAK;AAEjC,KAAI,OAAO,UAAU,SACnB,QAAO,UAAU;AAEnB,QAAO;;;;;AAMT,SAAgB,WAAW,OAAgB,eAAe,GAAW;AACnE,KAAI,OAAO,UAAU,SACnB,QAAO;AAET,KAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,SAAS,OAAO,MAAM;AAC5B,MAAI,CAAC,OAAO,MAAM,OAAO,CACvB,QAAO;;AAGX,QAAO;;;;;AAMT,SAAgB,WAAW,OAAgB,eAAe,IAAY;AACpE,KAAI,OAAO,UAAU,SACnB,QAAO;AAET,KAAI,UAAU,KAAA,KAAa,UAAU,KACnC,QAAO;AAET,QAAO,OAAO,MAAM"}
@@ -1,37 +0,0 @@
1
- /**
2
- * ACP Routing Integration
3
- *
4
- * Integrates ACP sessions with the new routing system.
5
- * Ensures ACP sessions use the unified session key format.
6
- */
7
- /**
8
- * Build ACP session key in unified format
9
- *
10
- * Format: {agentId}:acp:{uuid}
11
- */
12
- export declare function buildAcpSessionKey(params: {
13
- agentId: string;
14
- acpId: string;
15
- }): string;
16
- /**
17
- * Build subagent ACP session key
18
- *
19
- * Format: subagent:{parentId}:acp:{uuid}
20
- */
21
- export declare function buildSubagentAcpSessionKey(params: {
22
- parentAgentId: string;
23
- parentSessionId: string;
24
- acpId: string;
25
- }): string;
26
- /**
27
- * Check if a session key is an ACP session
28
- */
29
- export declare function isAcpSessionKey(sessionKey: string): boolean;
30
- /**
31
- * Extract agent ID from ACP session key
32
- */
33
- export declare function extractAgentIdFromAcpKey(sessionKey: string): string | null;
34
- /**
35
- * Validate ACP session key format
36
- */
37
- export declare function isValidAcpSessionKey(sessionKey: string): boolean;