@undefineds.co/xpod 0.2.45 → 0.3.0

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 (414) hide show
  1. package/dist/agents/AgentExecutorFactory.js +12 -13
  2. package/dist/agents/AgentExecutorFactory.js.map +1 -1
  3. package/dist/agents/config/agent-meta-schema.d.ts +31 -3
  4. package/dist/agents/config/agent-meta-schema.js +37 -3
  5. package/dist/agents/config/agent-meta-schema.js.map +1 -1
  6. package/dist/agents/config/index.d.ts +5 -5
  7. package/dist/agents/config/index.js +7 -6
  8. package/dist/agents/config/index.js.map +1 -1
  9. package/dist/agents/config/parse-agent-instructions.d.ts +12 -0
  10. package/dist/agents/config/parse-agent-instructions.js +23 -0
  11. package/dist/agents/config/parse-agent-instructions.js.map +1 -0
  12. package/dist/agents/config/resolve.d.ts +7 -12
  13. package/dist/agents/config/resolve.js +272 -156
  14. package/dist/agents/config/resolve.js.map +1 -1
  15. package/dist/agents/config/types.d.ts +33 -36
  16. package/dist/agents/config/types.js +4 -4
  17. package/dist/agents/config/types.js.map +1 -1
  18. package/dist/agents/index.d.ts +2 -7
  19. package/dist/agents/index.js +4 -14
  20. package/dist/agents/index.js.map +1 -1
  21. package/dist/agents/types.d.ts +2 -2
  22. package/dist/agents/types.js.map +1 -1
  23. package/dist/ai/service/CredentialReaderImpl.js +9 -14
  24. package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
  25. package/dist/api/ApiServer.d.ts +7 -0
  26. package/dist/api/ApiServer.js +5 -1
  27. package/dist/api/ApiServer.js.map +1 -1
  28. package/dist/api/chatkit/default-agent.js +1 -1
  29. package/dist/api/chatkit/default-agent.js.map +1 -1
  30. package/dist/api/chatkit/index.d.ts +8 -0
  31. package/dist/api/chatkit/index.js +15 -1
  32. package/dist/api/chatkit/index.js.map +1 -1
  33. package/dist/api/chatkit/pod-store.d.ts +80 -17
  34. package/dist/api/chatkit/pod-store.js +816 -162
  35. package/dist/api/chatkit/pod-store.js.map +1 -1
  36. package/dist/api/chatkit/runtime/AcpAgentRuntime.d.ts +41 -0
  37. package/dist/api/chatkit/runtime/AcpAgentRuntime.js +573 -0
  38. package/dist/api/chatkit/runtime/AcpAgentRuntime.js.map +1 -0
  39. package/dist/api/chatkit/runtime/CodexRuntimeProjector.d.ts +27 -0
  40. package/dist/api/chatkit/runtime/CodexRuntimeProjector.js +157 -0
  41. package/dist/api/chatkit/runtime/CodexRuntimeProjector.js.map +1 -0
  42. package/dist/api/chatkit/schema.d.ts +53 -133
  43. package/dist/api/chatkit/schema.js +11 -175
  44. package/dist/api/chatkit/schema.js.map +1 -1
  45. package/dist/api/chatkit/service.d.ts +15 -9
  46. package/dist/api/chatkit/service.js +82 -234
  47. package/dist/api/chatkit/service.js.map +1 -1
  48. package/dist/api/chatkit/store.d.ts +35 -3
  49. package/dist/api/chatkit/store.js +157 -3
  50. package/dist/api/chatkit/store.js.map +1 -1
  51. package/dist/api/chatkit/types.d.ts +16 -2
  52. package/dist/api/chatkit/types.js +24 -5
  53. package/dist/api/chatkit/types.js.map +1 -1
  54. package/dist/api/container/common.js +59 -2
  55. package/dist/api/container/common.js.map +1 -1
  56. package/dist/api/container/index.js +15 -0
  57. package/dist/api/container/index.js.map +1 -1
  58. package/dist/api/container/routes.js +11 -0
  59. package/dist/api/container/routes.js.map +1 -1
  60. package/dist/api/container/types.d.ts +26 -0
  61. package/dist/api/container/types.js.map +1 -1
  62. package/dist/api/handlers/InngestHandler.d.ts +11 -0
  63. package/dist/api/handlers/InngestHandler.js +19 -0
  64. package/dist/api/handlers/InngestHandler.js.map +1 -0
  65. package/dist/api/handlers/RunHandler.d.ts +7 -0
  66. package/dist/api/handlers/RunHandler.js +169 -0
  67. package/dist/api/handlers/RunHandler.js.map +1 -0
  68. package/dist/api/handlers/index.d.ts +1 -0
  69. package/dist/api/handlers/index.js +1 -0
  70. package/dist/api/handlers/index.js.map +1 -1
  71. package/dist/api/models/namespaces.d.ts +2 -2
  72. package/dist/api/models/namespaces.js +1 -4
  73. package/dist/api/models/namespaces.js.map +1 -1
  74. package/dist/api/runs/AgentRuntimeTypes.d.ts +83 -0
  75. package/dist/api/runs/AgentRuntimeTypes.js +3 -0
  76. package/dist/api/runs/AgentRuntimeTypes.js.map +1 -0
  77. package/dist/api/runs/EmbeddedInngestService.d.ts +47 -0
  78. package/dist/api/runs/EmbeddedInngestService.js +203 -0
  79. package/dist/api/runs/EmbeddedInngestService.js.map +1 -0
  80. package/dist/api/runs/InngestRunExecutionBackend.d.ts +416 -0
  81. package/dist/api/runs/InngestRunExecutionBackend.js +225 -0
  82. package/dist/api/runs/InngestRunExecutionBackend.js.map +1 -0
  83. package/dist/api/runs/ManagedRunWorker.d.ts +52 -0
  84. package/dist/api/runs/ManagedRunWorker.js +452 -0
  85. package/dist/api/runs/ManagedRunWorker.js.map +1 -0
  86. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +66 -0
  87. package/dist/api/runs/PiAgentRuntimeDriver.js +614 -0
  88. package/dist/api/runs/PiAgentRuntimeDriver.js.map +1 -0
  89. package/dist/api/runs/PiAgentRuntimeWorker.d.ts +1 -0
  90. package/dist/api/runs/PiAgentRuntimeWorker.js +33 -0
  91. package/dist/api/runs/PiAgentRuntimeWorker.js.map +1 -0
  92. package/dist/api/runs/RunAuthContextRegistry.d.ts +19 -0
  93. package/dist/api/runs/RunAuthContextRegistry.js +59 -0
  94. package/dist/api/runs/RunAuthContextRegistry.js.map +1 -0
  95. package/dist/api/runs/RunExecutionBackend.d.ts +57 -0
  96. package/dist/api/runs/RunExecutionBackend.js +3 -0
  97. package/dist/api/runs/RunExecutionBackend.js.map +1 -0
  98. package/dist/api/runs/RunStateCenter.d.ts +82 -0
  99. package/dist/api/runs/RunStateCenter.js +665 -0
  100. package/dist/api/runs/RunStateCenter.js.map +1 -0
  101. package/dist/api/runs/schema.d.ts +55 -0
  102. package/dist/api/runs/schema.js +14 -0
  103. package/dist/api/runs/schema.js.map +1 -0
  104. package/dist/api/runs/store.d.ts +105 -0
  105. package/dist/api/runs/store.js +116 -0
  106. package/dist/api/runs/store.js.map +1 -0
  107. package/dist/api/runtime.d.ts +2 -0
  108. package/dist/api/runtime.js +40 -1
  109. package/dist/api/runtime.js.map +1 -1
  110. package/dist/api/service/VectorStoreService.d.ts +1 -0
  111. package/dist/api/service/VectorStoreService.js +27 -34
  112. package/dist/api/service/VectorStoreService.js.map +1 -1
  113. package/dist/api/service/provider-registry.d.ts +1 -1
  114. package/dist/api/service/provider-registry.js +1 -1
  115. package/dist/api/service/provider-registry.js.map +1 -1
  116. package/dist/api/tasks/InngestTaskScheduler.d.ts +751 -0
  117. package/dist/api/tasks/InngestTaskScheduler.js +209 -0
  118. package/dist/api/tasks/InngestTaskScheduler.js.map +1 -0
  119. package/dist/api/tasks/TaskAuthBinding.d.ts +68 -0
  120. package/dist/api/tasks/TaskAuthBinding.js +162 -0
  121. package/dist/api/tasks/TaskAuthBinding.js.map +1 -0
  122. package/dist/api/tasks/TaskMaterializer.d.ts +55 -0
  123. package/dist/api/tasks/TaskMaterializer.js +452 -0
  124. package/dist/api/tasks/TaskMaterializer.js.map +1 -0
  125. package/dist/api/tasks/TaskService.d.ts +57 -0
  126. package/dist/api/tasks/TaskService.js +235 -0
  127. package/dist/api/tasks/TaskService.js.map +1 -0
  128. package/dist/api/tasks/index.d.ts +6 -0
  129. package/dist/api/tasks/index.js +25 -0
  130. package/dist/api/tasks/index.js.map +1 -0
  131. package/dist/api/tasks/schema.d.ts +23 -0
  132. package/dist/api/tasks/schema.js +8 -0
  133. package/dist/api/tasks/schema.js.map +1 -0
  134. package/dist/api/tasks/store.d.ts +40 -0
  135. package/dist/api/tasks/store.js +34 -0
  136. package/dist/api/tasks/store.js.map +1 -0
  137. package/dist/api/workspace/types.d.ts +3 -0
  138. package/dist/api/workspace/types.js +23 -0
  139. package/dist/api/workspace/types.js.map +1 -0
  140. package/dist/cli/commands/config.d.ts +8 -7
  141. package/dist/cli/commands/config.js +72 -48
  142. package/dist/cli/commands/config.js.map +1 -1
  143. package/dist/cli/commands/login.d.ts +10 -8
  144. package/dist/cli/commands/login.js +84 -84
  145. package/dist/cli/commands/login.js.map +1 -1
  146. package/dist/cli/index.js +3 -124
  147. package/dist/cli/index.js.map +1 -1
  148. package/dist/http/search/SearchHttpHandler.js +13 -18
  149. package/dist/http/search/SearchHttpHandler.js.map +1 -1
  150. package/dist/storage/vector/VectorIndexingListener.js +13 -18
  151. package/dist/storage/vector/VectorIndexingListener.js.map +1 -1
  152. package/dist/vocab/index.d.ts +2 -6
  153. package/dist/vocab/index.js +2 -6
  154. package/dist/vocab/index.js.map +1 -1
  155. package/dist/vocab/udfs.d.ts +12 -0
  156. package/dist/vocab/udfs.js +12 -0
  157. package/dist/vocab/udfs.js.map +1 -1
  158. package/node_modules/@undefineds.co/drizzle-solid/README.md +52 -24
  159. package/node_modules/@undefineds.co/drizzle-solid/README.zh-CN.md +30 -24
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/discovery/types.d.ts +6 -2
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/discovery/types.d.ts.map +1 -1
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +43 -10
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.d.ts.map +1 -1
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.js +1 -0
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.js.map +1 -1
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.d.ts +5 -0
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.d.ts.map +1 -1
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.js +44 -13
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.js.map +1 -1
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts +1 -0
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +21 -2
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/types.d.ts +1 -0
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/types.d.ts.map +1 -1
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/expressions.d.ts +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/expressions.d.ts.map +1 -1
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts +76 -41
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts.map +1 -1
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +443 -114
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.d.ts +28 -1
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.d.ts.map +1 -1
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.js +142 -31
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.js.map +1 -1
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.d.ts +3 -0
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.d.ts.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.js +84 -6
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.js.map +1 -1
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts +3 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts.map +1 -1
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js +29 -9
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js.map +1 -1
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +2 -8
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +19 -51
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/types.d.ts +1 -0
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/types.d.ts.map +1 -1
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-conditions.d.ts +2 -2
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-conditions.d.ts.map +1 -1
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +6 -6
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts +4 -4
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts.map +1 -1
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js +56 -23
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js.map +1 -1
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.d.ts +14 -10
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.d.ts.map +1 -1
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.js +55 -23
  214. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.js.map +1 -1
  215. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.d.ts +3 -3
  216. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.js +6 -6
  217. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.js.map +1 -1
  218. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.d.ts +3 -3
  219. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.js +4 -4
  220. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.js.map +1 -1
  221. package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.d.ts.map +1 -1
  222. package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.js +33 -8
  223. package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.js.map +1 -1
  224. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/defs.d.ts +11 -2
  225. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/defs.d.ts.map +1 -1
  226. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.d.ts.map +1 -1
  227. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.js +3 -2
  228. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.js.map +1 -1
  229. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts +13 -8
  230. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts.map +1 -1
  231. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js +24 -22
  232. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js.map +1 -1
  233. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.d.ts +3 -0
  234. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.d.ts.map +1 -1
  235. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.js.map +1 -1
  236. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.d.ts +3 -2
  237. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.d.ts.map +1 -1
  238. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.js +28 -14
  239. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.js.map +1 -1
  240. package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.d.ts.map +1 -1
  241. package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.js +3 -2
  242. package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.js.map +1 -1
  243. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.d.ts +9 -9
  244. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.d.ts.map +1 -1
  245. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.js +56 -22
  246. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.js.map +1 -1
  247. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.d.ts +9 -1
  248. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.d.ts.map +1 -1
  249. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.js +2 -0
  250. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.js.map +1 -1
  251. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts +6 -2
  252. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts.map +1 -1
  253. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  254. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  255. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +43 -10
  256. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  257. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.d.ts.map +1 -1
  258. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.js +1 -0
  259. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.js.map +1 -1
  260. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts +5 -0
  261. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts.map +1 -1
  262. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.js +44 -13
  263. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.js.map +1 -1
  264. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts +1 -0
  265. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  266. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +21 -2
  267. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  268. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts +1 -0
  269. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts.map +1 -1
  270. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts +1 -1
  271. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts.map +1 -1
  272. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts +76 -41
  273. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts.map +1 -1
  274. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +443 -114
  275. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  276. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts +28 -1
  277. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts.map +1 -1
  278. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.js +142 -31
  279. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.js.map +1 -1
  280. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts +3 -0
  281. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts.map +1 -1
  282. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.js +84 -6
  283. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.js.map +1 -1
  284. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts +3 -0
  285. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts.map +1 -1
  286. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js +29 -9
  287. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js.map +1 -1
  288. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +2 -8
  289. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  290. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +19 -51
  291. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  292. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts +1 -0
  293. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts.map +1 -1
  294. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts +2 -2
  295. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts.map +1 -1
  296. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +6 -6
  297. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  298. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts +4 -4
  299. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts.map +1 -1
  300. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js +56 -23
  301. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js.map +1 -1
  302. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts +14 -10
  303. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -1
  304. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.js +55 -23
  305. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.js.map +1 -1
  306. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.d.ts +3 -3
  307. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.js +6 -6
  308. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.js.map +1 -1
  309. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.d.ts +3 -3
  310. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.js +4 -4
  311. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.js.map +1 -1
  312. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -1
  313. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.js +33 -8
  314. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.js.map +1 -1
  315. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts +11 -2
  316. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts.map +1 -1
  317. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.d.ts.map +1 -1
  318. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.js +3 -2
  319. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.js.map +1 -1
  320. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts +13 -8
  321. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts.map +1 -1
  322. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js +24 -22
  323. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js.map +1 -1
  324. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts +3 -0
  325. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts.map +1 -1
  326. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.js.map +1 -1
  327. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts +3 -2
  328. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts.map +1 -1
  329. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.js +28 -14
  330. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.js.map +1 -1
  331. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.d.ts.map +1 -1
  332. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.js +3 -2
  333. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.js.map +1 -1
  334. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts +9 -9
  335. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts.map +1 -1
  336. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.js +56 -22
  337. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.js.map +1 -1
  338. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts +9 -1
  339. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts.map +1 -1
  340. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.js +2 -0
  341. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.js.map +1 -1
  342. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts +16 -2
  343. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts.map +1 -1
  344. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.js +1 -1
  345. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.js.map +1 -1
  346. package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts +16 -2
  347. package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts.map +1 -1
  348. package/node_modules/@undefineds.co/drizzle-solid/dist/utils/find-by-iri.js +1 -1
  349. package/node_modules/@undefineds.co/drizzle-solid/dist/utils/find-by-iri.js.map +1 -1
  350. package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
  351. package/package.json +5 -3
  352. package/dist/agents/AgentManager.d.ts +0 -116
  353. package/dist/agents/AgentManager.js +0 -290
  354. package/dist/agents/AgentManager.js.map +0 -1
  355. package/dist/agents/IndexAgent.d.ts +0 -70
  356. package/dist/agents/IndexAgent.js +0 -417
  357. package/dist/agents/IndexAgent.js.map +0 -1
  358. package/dist/agents/config/parse-agent-md.d.ts +0 -33
  359. package/dist/agents/config/parse-agent-md.js +0 -75
  360. package/dist/agents/config/parse-agent-md.js.map +0 -1
  361. package/dist/agents/schema/agent-config.d.ts +0 -2
  362. package/dist/agents/schema/agent-config.js +0 -32
  363. package/dist/agents/schema/agent-config.js.map +0 -1
  364. package/dist/agents/schema/create-agent-schema.d.ts +0 -25
  365. package/dist/agents/schema/create-agent-schema.js +0 -35
  366. package/dist/agents/schema/create-agent-schema.js.map +0 -1
  367. package/dist/api/chatkit/runtime/PtyThreadRuntime.d.ts +0 -127
  368. package/dist/api/chatkit/runtime/PtyThreadRuntime.js +0 -791
  369. package/dist/api/chatkit/runtime/PtyThreadRuntime.js.map +0 -1
  370. package/dist/cli/lib/agent-session.d.ts +0 -37
  371. package/dist/cli/lib/agent-session.js +0 -211
  372. package/dist/cli/lib/agent-session.js.map +0 -1
  373. package/dist/cli/lib/ensure-ai-credentials.d.ts +0 -13
  374. package/dist/cli/lib/ensure-ai-credentials.js +0 -40
  375. package/dist/cli/lib/ensure-ai-credentials.js.map +0 -1
  376. package/dist/cli/lib/model-manager.d.ts +0 -37
  377. package/dist/cli/lib/model-manager.js +0 -251
  378. package/dist/cli/lib/model-manager.js.map +0 -1
  379. package/dist/cli/lib/oauth-credential-manager.d.ts +0 -37
  380. package/dist/cli/lib/oauth-credential-manager.js +0 -129
  381. package/dist/cli/lib/oauth-credential-manager.js.map +0 -1
  382. package/dist/cli/lib/oauth-providers/codebuddy.d.ts +0 -25
  383. package/dist/cli/lib/oauth-providers/codebuddy.js +0 -69
  384. package/dist/cli/lib/oauth-providers/codebuddy.js.map +0 -1
  385. package/dist/cli/lib/oauth-providers/index.d.ts +0 -12
  386. package/dist/cli/lib/oauth-providers/index.js +0 -23
  387. package/dist/cli/lib/oauth-providers/index.js.map +0 -1
  388. package/dist/cli/lib/pi-optional.d.ts +0 -84
  389. package/dist/cli/lib/pi-optional.js +0 -35
  390. package/dist/cli/lib/pi-optional.js.map +0 -1
  391. package/dist/cli/lib/pod-ai-config.d.ts +0 -26
  392. package/dist/cli/lib/pod-ai-config.js +0 -99
  393. package/dist/cli/lib/pod-ai-config.js.map +0 -1
  394. package/dist/cli/lib/pod-thread-store.d.ts +0 -57
  395. package/dist/cli/lib/pod-thread-store.js +0 -312
  396. package/dist/cli/lib/pod-thread-store.js.map +0 -1
  397. package/dist/cli/lib/secretary-prompt.d.ts +0 -6
  398. package/dist/cli/lib/secretary-prompt.js +0 -85
  399. package/dist/cli/lib/secretary-prompt.js.map +0 -1
  400. package/dist/task/DrizzleTaskQueue.d.ts +0 -56
  401. package/dist/task/DrizzleTaskQueue.js +0 -171
  402. package/dist/task/DrizzleTaskQueue.js.map +0 -1
  403. package/dist/task/TaskExecutor.d.ts +0 -82
  404. package/dist/task/TaskExecutor.js +0 -198
  405. package/dist/task/TaskExecutor.js.map +0 -1
  406. package/dist/task/index.d.ts +0 -10
  407. package/dist/task/index.js +0 -20
  408. package/dist/task/index.js.map +0 -1
  409. package/dist/task/schema.d.ts +0 -53
  410. package/dist/task/schema.js +0 -71
  411. package/dist/task/schema.js.map +0 -1
  412. package/dist/task/types.d.ts +0 -186
  413. package/dist/task/types.js +0 -12
  414. package/dist/task/types.js.map +0 -1
@@ -1,791 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.PtyThreadRuntime = void 0;
27
- const path = __importStar(require("node:path"));
28
- const crypto = __importStar(require("node:crypto"));
29
- const fs = __importStar(require("node:fs"));
30
- const os = __importStar(require("node:os"));
31
- const global_logger_factory_1 = require("global-logger-factory");
32
- const platform_ai_config_1 = require("../../service/platform-ai-config");
33
- const runtime_1 = require("../../../runtime");
34
- const GitWorktreeService_1 = require("./GitWorktreeService");
35
- const AcpRunner_1 = require("./AcpRunner");
36
- const provider_registry_1 = require("../../service/provider-registry");
37
- /**
38
- * In-memory PTY runtime manager keyed by threadId.
39
- *
40
- * Notes:
41
- * - Runtime state is not persisted; thread metadata can store repo/worktree hints,
42
- * but PTY processes are always runtime-local.
43
- */
44
- class PtyThreadRuntime {
45
- constructor(options = {}) {
46
- this.options = options;
47
- this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
48
- this.git = new GitWorktreeService_1.GitWorktreeService();
49
- this.runtimes = new Map();
50
- }
51
- isRunning(threadId) {
52
- return Boolean(this.runtimes.get(threadId)?.runner.isRunning());
53
- }
54
- async ensureStarted(threadId, cfg) {
55
- const existing = this.runtimes.get(threadId);
56
- if (existing?.runner.isRunning()) {
57
- return existing.state;
58
- }
59
- const workdir = await this.resolveWorkdir(threadId, cfg.workspace);
60
- if (cfg.workspace.type === 'git') {
61
- this.git.ensurePathInsideRepo(cfg.workspace.rootPath, workdir);
62
- }
63
- const protocol = 'acp';
64
- if (cfg.runner.protocol && cfg.runner.protocol !== 'acp') {
65
- throw new Error(`Unsupported runner protocol: ${cfg.runner.protocol}. Only 'acp' is supported.`);
66
- }
67
- const argv = this.resolveRunnerArgv(cfg.runner.type, cfg.runner.argv);
68
- const command = argv[0];
69
- const args = argv.slice(1);
70
- const env = this.buildRunnerEnv(cfg.runner.type, threadId, workdir, cfg.agentConfig);
71
- const runner = new AcpRunner_1.AcpRunner();
72
- runner.start({ command, args, cwd: workdir, env });
73
- // ACP handshake + session creation (one session per thread).
74
- // We intentionally keep capabilities minimal to avoid the agent calling back into the server.
75
- await runner.request('initialize', {
76
- protocolVersion: 1,
77
- clientCapabilities: {},
78
- clientInfo: { name: 'xpod', version: 'dev' },
79
- });
80
- // Build session/new params — inject MCP servers + system prompt from agent config when available.
81
- const sessionParams = { cwd: workdir };
82
- const ac = cfg.agentConfig;
83
- if (ac) {
84
- sessionParams.mcpServers = Object.keys(ac.mcpServers).length > 0
85
- ? this.convertMcpServersForAcp(ac.mcpServers)
86
- : [];
87
- if (ac.systemPrompt)
88
- sessionParams.systemPrompt = ac.systemPrompt;
89
- if (ac.skillsContent)
90
- sessionParams.appendSystemPrompt = ac.skillsContent;
91
- if (ac.maxTurns)
92
- sessionParams.maxTurns = ac.maxTurns;
93
- if (ac.allowedTools)
94
- sessionParams.allowedTools = ac.allowedTools;
95
- if (ac.disallowedTools)
96
- sessionParams.disallowedTools = ac.disallowedTools;
97
- if (ac.permissionMode)
98
- sessionParams.permissionMode = ac.permissionMode;
99
- }
100
- else {
101
- sessionParams.mcpServers = [];
102
- }
103
- const newSession = await runner.request('session/new', sessionParams);
104
- if (!newSession?.sessionId) {
105
- throw new Error('ACP session/new did not return sessionId');
106
- }
107
- const state = { workdir, runnerType: cfg.runner.type, protocol, argv };
108
- this.runtimes.set(threadId, {
109
- runner,
110
- state,
111
- acp: { sessionId: newSession.sessionId, pendingRequests: new Map() },
112
- jobs: [],
113
- processing: false,
114
- });
115
- return state;
116
- }
117
- stop(threadId) {
118
- const rt = this.runtimes.get(threadId);
119
- if (!rt) {
120
- return;
121
- }
122
- rt.runner.stop('SIGINT');
123
- }
124
- /**
125
- * Write a message to stdin and stream back output deltas.
126
- * We serialize jobs per thread to reduce interleaving outputs.
127
- */
128
- sendMessage(threadId, text, options) {
129
- const rt = this.runtimes.get(threadId);
130
- if (!rt) {
131
- throw new Error('PTY runtime is not started');
132
- }
133
- const idleMs = options?.idleMs ?? 500;
134
- const authWaitMs = Math.max(options?.authWaitMs ?? 300_000, idleMs);
135
- const q = new AsyncPushQueue();
136
- rt.jobs.push({ input: text, idleMs, authWaitMs, queue: q });
137
- void this.processJobs(threadId);
138
- return q.iterate();
139
- }
140
- respondToRequest(threadId, requestId, output, options) {
141
- const rt = this.runtimes.get(threadId);
142
- if (!rt || rt.state.protocol !== 'acp' || !rt.acp) {
143
- throw new Error('ACP runtime is not started');
144
- }
145
- const pending = rt.acp.pendingRequests.get(requestId);
146
- if (!pending) {
147
- throw new Error(`ACP request not found: ${requestId}`);
148
- }
149
- const idleMs = options?.idleMs ?? 500;
150
- const authWaitMs = Math.max(options?.authWaitMs ?? 300_000, idleMs);
151
- const q = new AsyncPushQueue();
152
- void this.continueAfterRequestResponse(rt, pending, requestId, output, idleMs, authWaitMs, q);
153
- return q.iterate();
154
- }
155
- async processJobs(threadId) {
156
- const rt = this.runtimes.get(threadId);
157
- if (!rt || rt.processing) {
158
- return;
159
- }
160
- rt.processing = true;
161
- try {
162
- while (rt.jobs.length > 0) {
163
- const job = rt.jobs.shift();
164
- await this.runJobAcp(rt, job);
165
- }
166
- }
167
- finally {
168
- rt.processing = false;
169
- }
170
- }
171
- async runJobAcp(rt, job) {
172
- const runner = rt.runner;
173
- const sessionId = rt.acp?.sessionId;
174
- if (!sessionId) {
175
- throw new Error('ACP runtime missing sessionId');
176
- }
177
- let idleTimer;
178
- let done = false;
179
- const finish = () => {
180
- if (done)
181
- return;
182
- done = true;
183
- if (idleTimer) {
184
- clearTimeout(idleTimer);
185
- idleTimer = undefined;
186
- }
187
- runner.off('notification', onNotification);
188
- runner.off('request', onRequest);
189
- job.queue.close();
190
- };
191
- const bumpIdle = (ms = job.idleMs) => {
192
- if (done)
193
- return;
194
- if (idleTimer)
195
- clearTimeout(idleTimer);
196
- idleTimer = setTimeout(() => finish(), ms);
197
- };
198
- // For MVP:
199
- // - auto-ack common "permission"/"auth" style requests, so agents don't deadlock
200
- // - surface auth-required as a structured event (so clients can click URL)
201
- // - surface text chunks from session/update notifications
202
- const onRequest = (req) => {
203
- if (!req || typeof req.method !== 'string')
204
- return;
205
- if (req.method === 'session/request_permission' || req.method === 'auth/request' || req.method === 'auth/authorize') {
206
- const hint = req.params?.message || req.params?.reason || req.method;
207
- const url = this.extractAuthUrl(req.params);
208
- const options = this.extractAuthOptions(req.params) ??
209
- (url ? [{ label: 'Continue in browser', url, method: req.method }] : undefined);
210
- job.queue.push({
211
- type: 'auth_required',
212
- method: req.method,
213
- url,
214
- message: typeof hint === 'string' ? hint : undefined,
215
- options,
216
- });
217
- // Keep stream open longer so users can complete browser-based auth.
218
- bumpIdle(job.authWaitMs);
219
- // Ack so the runner doesn't deadlock.
220
- // For "permission" style requests we grant by default; for auth requests we just acknowledge handling.
221
- if (req.method === 'session/request_permission') {
222
- req.respond({ granted: true });
223
- }
224
- else {
225
- req.respond({ handled: true });
226
- }
227
- return;
228
- }
229
- // Map unknown requests to a "tool call" (client must respond via threads.add_client_tool_output).
230
- // We end the current stream so the client can send the follow-up request.
231
- const pendingId = `acp:${String(req.id)}`;
232
- rt.acp.pendingRequests.set(pendingId, {
233
- method: req.method,
234
- params: req.params,
235
- respond: req.respond,
236
- fail: req.fail,
237
- });
238
- job.queue.push({
239
- type: 'tool_call',
240
- requestId: pendingId,
241
- name: req.method,
242
- arguments: JSON.stringify(req.params ?? {}),
243
- });
244
- finish();
245
- };
246
- const onNotification = (method, params) => {
247
- if (method !== 'session/update')
248
- return;
249
- if (!params || params.sessionId !== sessionId)
250
- return;
251
- const update = params.update;
252
- if (!update || typeof update !== 'object')
253
- return;
254
- const text = this.extractTextDeltaFromSessionUpdate(update);
255
- if (typeof text === 'string' && text.length > 0) {
256
- job.queue.push({ type: 'text', text });
257
- bumpIdle();
258
- }
259
- };
260
- runner.on('request', onRequest);
261
- runner.on('notification', onNotification);
262
- try {
263
- // Don't await: some agents will block the response until tool-call requests are satisfied.
264
- // However, some agents (notably codex-acp) may return the final text in the response,
265
- // not via session/update streaming notifications. We therefore attach a best-effort
266
- // handler to capture text from the response when available.
267
- void runner.request('session/prompt', {
268
- sessionId,
269
- prompt: [{ type: 'text', text: job.input }],
270
- }).then((result) => {
271
- const text = this.extractTextFromPromptResult(result);
272
- if (typeof text === 'string' && text.length > 0) {
273
- job.queue.push({ type: 'text', text });
274
- bumpIdle();
275
- }
276
- }).catch((error) => {
277
- if (!done) {
278
- this.logger.warn(`ACP session/prompt failed: ${error}`);
279
- const anyErr = error;
280
- const dataMsg = anyErr?.data && typeof anyErr.data === 'object' && typeof anyErr.data.message === 'string'
281
- ? anyErr.data.message
282
- : undefined;
283
- const msg = dataMsg
284
- ? `${String(anyErr?.message ?? error)} | data.message=${dataMsg.slice(0, 800)}`
285
- : String(anyErr?.message ?? error);
286
- job.queue.push({ type: 'error', message: msg });
287
- finish();
288
- }
289
- });
290
- // Some agents return the session/prompt response before streaming the final updates.
291
- // We therefore keep listening until the stream goes idle.
292
- bumpIdle();
293
- await job.queue.waitClosed();
294
- }
295
- finally {
296
- finish();
297
- }
298
- }
299
- async continueAfterRequestResponse(rt, pending, requestId, output, idleMs, authWaitMs, queue) {
300
- const runner = rt.runner;
301
- const sessionId = rt.acp?.sessionId;
302
- if (!sessionId || !rt.acp) {
303
- throw new Error('ACP runtime missing session');
304
- }
305
- let idleTimer;
306
- let done = false;
307
- const finish = () => {
308
- if (done)
309
- return;
310
- done = true;
311
- if (idleTimer) {
312
- clearTimeout(idleTimer);
313
- idleTimer = undefined;
314
- }
315
- runner.off('notification', onNotification);
316
- runner.off('request', onRequest);
317
- queue.close();
318
- };
319
- const bumpIdle = (ms = idleMs) => {
320
- if (done)
321
- return;
322
- if (idleTimer)
323
- clearTimeout(idleTimer);
324
- idleTimer = setTimeout(() => finish(), ms);
325
- };
326
- const onRequest = (req) => {
327
- if (!req || typeof req.method !== 'string')
328
- return;
329
- if (req.method === 'session/request_permission' || req.method === 'auth/request' || req.method === 'auth/authorize') {
330
- const hint = req.params?.message || req.params?.reason || req.method;
331
- const url = this.extractAuthUrl(req.params);
332
- const options = this.extractAuthOptions(req.params) ??
333
- (url ? [{ label: 'Continue in browser', url, method: req.method }] : undefined);
334
- queue.push({
335
- type: 'auth_required',
336
- method: req.method,
337
- url,
338
- message: typeof hint === 'string' ? hint : undefined,
339
- options,
340
- });
341
- // Keep stream open longer so users can complete browser-based auth.
342
- bumpIdle(authWaitMs);
343
- if (req.method === 'session/request_permission') {
344
- req.respond({ granted: true });
345
- }
346
- else {
347
- req.respond({ handled: true });
348
- }
349
- return;
350
- }
351
- const nestedId = `acp:${String(req.id)}`;
352
- rt.acp.pendingRequests.set(nestedId, {
353
- method: req.method,
354
- params: req.params,
355
- respond: req.respond,
356
- fail: req.fail,
357
- });
358
- queue.push({
359
- type: 'tool_call',
360
- requestId: nestedId,
361
- name: req.method,
362
- arguments: JSON.stringify(req.params ?? {}),
363
- });
364
- finish();
365
- };
366
- const onNotification = (method, params) => {
367
- if (method !== 'session/update')
368
- return;
369
- if (!params || params.sessionId !== sessionId)
370
- return;
371
- const update = params.update;
372
- if (!update || typeof update !== 'object')
373
- return;
374
- const text = this.extractTextDeltaFromSessionUpdate(update);
375
- if (typeof text === 'string' && text.length > 0) {
376
- queue.push({ type: 'text', text });
377
- bumpIdle();
378
- }
379
- };
380
- runner.on('request', onRequest);
381
- runner.on('notification', onNotification);
382
- try {
383
- rt.acp.pendingRequests.delete(requestId);
384
- let result = output;
385
- try {
386
- result = JSON.parse(output);
387
- }
388
- catch {
389
- // keep raw string
390
- }
391
- pending.respond(result);
392
- bumpIdle();
393
- await queue.waitClosed();
394
- }
395
- finally {
396
- finish();
397
- }
398
- }
399
- async resolveWorkdir(threadId, workspace) {
400
- if (workspace.type === 'path') {
401
- if (!fs.existsSync(workspace.rootPath)) {
402
- throw new Error(`workspace.rootPath not found: ${workspace.rootPath}`);
403
- }
404
- return workspace.rootPath;
405
- }
406
- // workspace.type === 'git'
407
- const repoRoot = workspace.rootPath;
408
- const worktree = workspace.worktree;
409
- if (worktree.mode === 'existing') {
410
- if (!fs.existsSync(worktree.path)) {
411
- throw new Error(`worktree.path not found: ${worktree.path}`);
412
- }
413
- return worktree.path;
414
- }
415
- await this.git.assertGitRepo(repoRoot);
416
- const rootDirName = this.options.worktreeRootDirName ?? '.xpod-worktrees';
417
- const root = path.join(repoRoot, rootDirName);
418
- const worktreePath = path.join(root, threadId);
419
- if (fs.existsSync(worktreePath)) {
420
- return worktreePath;
421
- }
422
- const baseRef = worktree.baseRef ?? 'main';
423
- await this.git.createWorktree({
424
- repoPath: repoRoot,
425
- worktreePath,
426
- baseRef,
427
- branch: worktree.branch,
428
- });
429
- return worktreePath;
430
- }
431
- resolveRunnerArgv(type, argv) {
432
- if (argv && argv.length > 0) {
433
- return argv;
434
- }
435
- switch (type) {
436
- case 'codebuddy':
437
- return [this.resolveLocalBin('codebuddy'), '--acp'];
438
- case 'claude':
439
- return [this.resolveLocalBin('claude-code-acp')]; // from @zed-industries/claude-code-acp
440
- case 'codex':
441
- return [this.resolveLocalBin('codex-acp')]; // from @zed-industries/codex-acp
442
- default:
443
- return [type];
444
- }
445
- }
446
- resolveLocalBin(binName) {
447
- const localBin = path.join(runtime_1.PACKAGE_ROOT, 'node_modules', '.bin', binName);
448
- if (fs.existsSync(localBin)) {
449
- return localBin;
450
- }
451
- return binName;
452
- }
453
- buildRunnerEnv(type, threadId, workdir, agentConfig) {
454
- // When agentConfig is provided, use its credentials; otherwise fall back to DEFAULT_* env vars.
455
- const defaultApiKey = agentConfig?.apiKey || process.env.DEFAULT_API_KEY?.trim();
456
- const rawApiBase = agentConfig?.baseUrl || (0, platform_ai_config_1.getPlatformApiBaseUrl)();
457
- const defaultModel = agentConfig?.model || process.env.DEFAULT_MODEL?.trim();
458
- // CodeBuddy ACP relies on its own local auth state, not OpenAI/Anthropic keys.
459
- if (type === 'codebuddy') {
460
- return undefined;
461
- }
462
- // Run external agents with an isolated HOME to avoid:
463
- // - polluting the user's real ~/.codex / ~/.claude state
464
- // - sandbox permission errors when tools try to write outside workspace roots
465
- const home = this.getIsolatedHomeDir(type, threadId, workdir);
466
- if (type === 'codex') {
467
- // codex-acp speaks OpenAI Responses API by default. Only api.openai.com natively supports it.
468
- // For all other providers, configure codex to use wire_api="chat" so it sends
469
- // Chat Completions requests directly to the provider instead.
470
- const defaultApiBase = rawApiBase || (0, provider_registry_1.getDefaultBaseUrl)();
471
- const codexHome = path.join(home, '.codex');
472
- this.ensureDir(codexHome);
473
- this.ensureDir(path.join(codexHome, 'skills'));
474
- this.ensureCodexConfigAndAuth(codexHome, {
475
- baseUrl: defaultApiBase,
476
- apiKey: defaultApiKey,
477
- wireApi: (0, provider_registry_1.codexWireApi)(defaultApiBase),
478
- });
479
- const env = {
480
- HOME: home,
481
- XDG_CONFIG_HOME: path.join(home, '.config'),
482
- XDG_STATE_HOME: path.join(home, '.local', 'state'),
483
- XDG_DATA_HOME: path.join(home, '.local', 'share'),
484
- XDG_CACHE_HOME: path.join(home, '.cache'),
485
- CODEX_HOME: codexHome,
486
- };
487
- if (defaultApiKey) {
488
- // codex-acp advertises CODEX_API_KEY / OPENAI_API_KEY.
489
- env.CODEX_API_KEY = defaultApiKey;
490
- env.OPENAI_API_KEY = defaultApiKey;
491
- }
492
- env.OPENAI_BASE_URL = defaultApiBase;
493
- env.OPENAI_API_BASE = defaultApiBase;
494
- if (defaultModel) {
495
- // Best-effort: may be ignored by codex-acp depending on its config.
496
- env.OPENAI_MODEL = defaultModel;
497
- env.CODEX_MODEL = defaultModel;
498
- }
499
- return env;
500
- }
501
- // type === 'claude'
502
- const defaultApiBase = rawApiBase || (0, provider_registry_1.getDefaultBaseUrl)();
503
- const env = {
504
- HOME: home,
505
- XDG_CONFIG_HOME: path.join(home, '.config'),
506
- XDG_STATE_HOME: path.join(home, '.local', 'state'),
507
- XDG_DATA_HOME: path.join(home, '.local', 'share'),
508
- XDG_CACHE_HOME: path.join(home, '.cache'),
509
- };
510
- const normalizedBase = defaultApiBase ? this.normalizeClaudeBaseUrl(defaultApiBase) : undefined;
511
- const isOpenRouterLike = (typeof normalizedBase === 'string' && normalizedBase.includes('openrouter.ai'));
512
- if (defaultApiKey) {
513
- // claude-code-acp is built on the Claude Agent SDK.
514
- // For OpenRouter, the Anthropic-compatible path is typically via AUTH_TOKEN.
515
- if (isOpenRouterLike) {
516
- env.ANTHROPIC_AUTH_TOKEN = defaultApiKey;
517
- delete env.ANTHROPIC_API_KEY;
518
- }
519
- else {
520
- env.ANTHROPIC_API_KEY = defaultApiKey;
521
- delete env.ANTHROPIC_AUTH_TOKEN;
522
- }
523
- }
524
- if (normalizedBase) {
525
- env.ANTHROPIC_BASE_URL = normalizedBase;
526
- }
527
- if (defaultModel) {
528
- // Use the same model for all families to keep behavior predictable.
529
- env.ANTHROPIC_DEFAULT_SONNET_MODEL = defaultModel;
530
- env.ANTHROPIC_DEFAULT_HAIKU_MODEL = defaultModel;
531
- env.ANTHROPIC_DEFAULT_OPUS_MODEL = defaultModel;
532
- }
533
- return env;
534
- }
535
- getIsolatedHomeDir(type, threadId, workdir) {
536
- // Keep it stable per thread/workdir so session state can be reused across requests,
537
- // but still isolated from the user's actual home.
538
- const hash = crypto.createHash('sha256').update(`${type}:${threadId}:${workdir}`).digest('hex').slice(0, 16);
539
- const root = path.join(os.tmpdir(), 'xpod-acp-home', type, hash);
540
- fs.mkdirSync(root, { recursive: true });
541
- return root;
542
- }
543
- ensureDir(dir) {
544
- try {
545
- fs.mkdirSync(dir, { recursive: true });
546
- }
547
- catch {
548
- // best-effort: agent binaries may create it themselves
549
- }
550
- }
551
- normalizeClaudeBaseUrl(baseUrl) {
552
- if (baseUrl.endsWith('/v1')) {
553
- return baseUrl.slice(0, -3);
554
- }
555
- if (baseUrl.endsWith('/v1/')) {
556
- return baseUrl.slice(0, -4);
557
- }
558
- return baseUrl;
559
- }
560
- ensureCodexConfigAndAuth(codexHome, options) {
561
- // codex-acp wraps Codex CLI, which primarily reads config/auth from CODEX_HOME.
562
- // We generate a minimal config + auth file for isolated runs so that:
563
- // - it doesn't depend on the developer's ~/.codex
564
- // - it can authenticate without interactive login
565
- const configPath = path.join(codexHome, 'config.toml');
566
- const authPath = path.join(codexHome, 'auth.json');
567
- try {
568
- const baseUrl = options.baseUrl?.trim();
569
- if (baseUrl) {
570
- const wireApi = options.wireApi ?? 'responses';
571
- const contents = [
572
- 'model_provider = "codex"',
573
- '',
574
- '[model_providers.codex]',
575
- 'name = "codex"',
576
- `base_url = ${JSON.stringify(baseUrl)}`,
577
- `wire_api = ${JSON.stringify(wireApi)}`,
578
- 'requires_openai_auth = true',
579
- '',
580
- ].join('\n');
581
- fs.writeFileSync(configPath, contents, { encoding: 'utf8' });
582
- }
583
- }
584
- catch (e) {
585
- this.logger.debug(`Failed to write Codex config.toml: ${String(e)}`);
586
- }
587
- try {
588
- const apiKey = options.apiKey?.trim();
589
- if (apiKey) {
590
- // Match Codex's expected schema.
591
- fs.writeFileSync(authPath, JSON.stringify({ OPENAI_API_KEY: apiKey }), { encoding: 'utf8' });
592
- }
593
- }
594
- catch (e) {
595
- this.logger.debug(`Failed to write Codex auth.json: ${String(e)}`);
596
- }
597
- }
598
- /**
599
- * Convert McpServerConfig map to ACP session/new format.
600
- * ACP expects an array of { name, ...config } objects.
601
- */
602
- convertMcpServersForAcp(servers) {
603
- return Object.entries(servers).map(([name, config]) => ({
604
- name,
605
- ...config,
606
- }));
607
- }
608
- extractTextDeltaFromSessionUpdate(update) {
609
- if (!update)
610
- return undefined;
611
- // Common shapes:
612
- // - { sessionUpdate/type: 'agent_message_chunk', content: { type:'text', text:'...' } }
613
- // - { ... , delta/text/content: '...' }
614
- // - { ... , message: { content: [{ type:'text', text:'...' }, ...] } }
615
- if (typeof update === 'string')
616
- return update;
617
- if (typeof update.delta === 'string')
618
- return update.delta;
619
- if (typeof update.text === 'string')
620
- return update.text;
621
- const content = update.content?.content ?? update.content;
622
- if (typeof content === 'string')
623
- return content;
624
- if (content && typeof content === 'object') {
625
- if (typeof content.text === 'string')
626
- return content.text;
627
- if (Array.isArray(content)) {
628
- const parts = content
629
- .map((p) => (p && typeof p === 'object' ? p.text : undefined))
630
- .filter((t) => typeof t === 'string');
631
- if (parts.length)
632
- return parts.join('');
633
- }
634
- }
635
- const message = update.message ?? update.item ?? update.assistant_message;
636
- if (message && typeof message === 'object') {
637
- const msgContent = message.content?.content ?? message.content;
638
- if (typeof msgContent === 'string')
639
- return msgContent;
640
- if (Array.isArray(msgContent)) {
641
- const parts = msgContent
642
- .map((p) => {
643
- if (!p || typeof p !== 'object')
644
- return undefined;
645
- if (typeof p.text === 'string')
646
- return p.text;
647
- if (typeof p.delta === 'string')
648
- return p.delta;
649
- return undefined;
650
- })
651
- .filter((t) => typeof t === 'string');
652
- if (parts.length)
653
- return parts.join('');
654
- }
655
- }
656
- return undefined;
657
- }
658
- extractTextFromPromptResult(result) {
659
- if (!result)
660
- return undefined;
661
- if (typeof result === 'string')
662
- return result;
663
- // Common shapes observed in ACP implementations:
664
- // - { message: { content: [{ type:'text', text:'...' }, ...] } }
665
- // - { output_text: '...' } / { text: '...' }
666
- // - { content: [{...}] }
667
- if (typeof result.text === 'string')
668
- return result.text;
669
- if (typeof result.output_text === 'string')
670
- return result.output_text;
671
- const message = result.message ?? result.item ?? result.assistant_message;
672
- if (message && typeof message === 'object') {
673
- const msgContent = message.content?.content ?? message.content;
674
- if (typeof msgContent === 'string')
675
- return msgContent;
676
- if (Array.isArray(msgContent)) {
677
- const parts = msgContent
678
- .map((p) => (p && typeof p === 'object' ? (typeof p.text === 'string' ? p.text : undefined) : undefined))
679
- .filter((t) => typeof t === 'string');
680
- if (parts.length)
681
- return parts.join('');
682
- }
683
- }
684
- const content = result.content?.content ?? result.content;
685
- if (typeof content === 'string')
686
- return content;
687
- if (Array.isArray(content)) {
688
- const parts = content
689
- .map((p) => (p && typeof p === 'object' ? (typeof p.text === 'string' ? p.text : undefined) : undefined))
690
- .filter((t) => typeof t === 'string');
691
- if (parts.length)
692
- return parts.join('');
693
- }
694
- return undefined;
695
- }
696
- extractAuthUrl(params) {
697
- if (!params || typeof params !== 'object')
698
- return undefined;
699
- const candidates = [
700
- params.url,
701
- params.authorizationUrl,
702
- params.authorization_url,
703
- params.authUrl,
704
- params.auth_url,
705
- params.browserUrl,
706
- params.browser_url,
707
- params.verification_uri,
708
- params.verificationUri,
709
- params.verificationUrl,
710
- ];
711
- const found = candidates.find((v) => typeof v === 'string' && v.startsWith('http'));
712
- return found;
713
- }
714
- extractAuthOptions(params) {
715
- if (!params || typeof params !== 'object')
716
- return undefined;
717
- const raw = Array.isArray(params.methods) ? params.methods
718
- : Array.isArray(params.options) ? params.options
719
- : Array.isArray(params.authMethods) ? params.authMethods
720
- : Array.isArray(params.auth_methods) ? params.auth_methods
721
- : undefined;
722
- if (!raw)
723
- return undefined;
724
- const opts = raw
725
- .map((m) => {
726
- if (!m || typeof m !== 'object')
727
- return undefined;
728
- const url = this.extractAuthUrl(m);
729
- const label = typeof m.label === 'string' ? m.label :
730
- typeof m.name === 'string' ? m.name :
731
- typeof m.type === 'string' ? m.type :
732
- undefined;
733
- const method = typeof m.method === 'string' ? m.method :
734
- typeof m.type === 'string' ? m.type :
735
- undefined;
736
- return { label, url, method };
737
- })
738
- .filter(Boolean);
739
- return opts.length > 0 ? opts : undefined;
740
- }
741
- }
742
- exports.PtyThreadRuntime = PtyThreadRuntime;
743
- class AsyncPushQueue {
744
- constructor() {
745
- this.items = [];
746
- this.resolvers = [];
747
- this._closed = false;
748
- this.closeResolvers = [];
749
- }
750
- push(item) {
751
- if (this._closed) {
752
- return;
753
- }
754
- this.items.push(item);
755
- const r = this.resolvers.shift();
756
- r?.();
757
- }
758
- close() {
759
- if (this._closed) {
760
- return;
761
- }
762
- this._closed = true;
763
- for (const r of this.resolvers) {
764
- r();
765
- }
766
- this.resolvers = [];
767
- for (const r of this.closeResolvers) {
768
- r();
769
- }
770
- this.closeResolvers = [];
771
- }
772
- async waitClosed() {
773
- if (this._closed) {
774
- return;
775
- }
776
- await new Promise((resolve) => this.closeResolvers.push(resolve));
777
- }
778
- async *iterate() {
779
- while (true) {
780
- if (this.items.length > 0) {
781
- yield this.items.shift();
782
- continue;
783
- }
784
- if (this._closed) {
785
- return;
786
- }
787
- await new Promise((resolve) => this.resolvers.push(resolve));
788
- }
789
- }
790
- }
791
- //# sourceMappingURL=PtyThreadRuntime.js.map