@undefineds.co/xpod 0.2.45 → 0.3.1

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 +9 -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
@@ -0,0 +1,66 @@
1
+ import type { AgentRuntimeEvent } from './AgentRuntimeTypes';
2
+ import type { RunExecutionBackend, RunExecutionInput } from './RunExecutionBackend';
3
+ type PiSdk = typeof import('@mariozechner/pi-coding-agent');
4
+ export interface PiAgentRuntimeDriverOptions {
5
+ /**
6
+ * local: run pi's full Agent Loop in the API process.
7
+ * cloud: run the entire pi Agent Loop in a sandboxed worker process.
8
+ */
9
+ agentLoopIsolation?: 'in-process' | 'sandboxed-process';
10
+ /**
11
+ * Cloud defaults to strict sandboxing: do not fall back to an unsandboxed
12
+ * process if sandbox-exec/bubblewrap is unavailable.
13
+ */
14
+ requireSandbox?: boolean;
15
+ workerPath?: string;
16
+ sandboxedLoopRunner?: (input: RunExecutionInput, workdir: string) => AsyncIterable<AgentRuntimeEvent>;
17
+ sessionRootDir?: string;
18
+ /**
19
+ * Off by default: pi sessions are request-scoped implementation detail. When
20
+ * enabled, the JSONL session is a diagnostic copy only; Xpod still restores
21
+ * authoritative state from Run/Thread/Message before each execution.
22
+ */
23
+ persistPiSessions?: boolean;
24
+ piSdk?: PiSdk;
25
+ }
26
+ /**
27
+ * Request-scoped adapter around pi's AgentSession primitives.
28
+ *
29
+ * Xpod restores durable conversation state into pi with replaceMessages() on
30
+ * every run. pi owns the atomic agent loop, tools and streaming events for the
31
+ * current invocation only; its SessionManager is not the Xpod state center.
32
+ */
33
+ export declare class PiAgentRuntimeDriver implements RunExecutionBackend {
34
+ private readonly options;
35
+ private static sdkPromise?;
36
+ private readonly git;
37
+ private readonly warmRuntimes;
38
+ constructor(options?: PiAgentRuntimeDriverOptions);
39
+ start(input: RunExecutionInput): AsyncIterable<AgentRuntimeEvent>;
40
+ private startInProcess;
41
+ private startSandboxedAgentLoop;
42
+ private projectPiEvent;
43
+ private resolvePiConfig;
44
+ private resolveProviderId;
45
+ private resolveApiForBaseUrl;
46
+ private resolveThinkingLevel;
47
+ private resolveTools;
48
+ private getWarmRuntime;
49
+ private createWarmRuntime;
50
+ private warmRuntimeKey;
51
+ private hashSecret;
52
+ private toPiMessages;
53
+ private resolveWorkdir;
54
+ private canResolveFileWorkspace;
55
+ private mapPodUrlToLocalPath;
56
+ private createSessionManager;
57
+ private resolveSessionDir;
58
+ private resolveWorkerPath;
59
+ private workerEnv;
60
+ private extractText;
61
+ private formatError;
62
+ private startupErrorToEvent;
63
+ private loadPiSdk;
64
+ }
65
+ export declare const PI_AGENT_WORKER_EVENT_PREFIX = "XPOD_AGENT_EVENT ";
66
+ export {};
@@ -0,0 +1,614 @@
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.PI_AGENT_WORKER_EVENT_PREFIX = exports.PiAgentRuntimeDriver = void 0;
27
+ const fs = __importStar(require("node:fs"));
28
+ const path = __importStar(require("node:path"));
29
+ const os = __importStar(require("node:os"));
30
+ const crypto = __importStar(require("node:crypto"));
31
+ const node_readline_1 = require("node:readline");
32
+ const provider_registry_1 = require("../service/provider-registry");
33
+ const platform_ai_config_1 = require("../service/platform-ai-config");
34
+ const GitWorktreeService_1 = require("../chatkit/runtime/GitWorktreeService");
35
+ const sandbox_1 = require("../../terminal/sandbox");
36
+ /**
37
+ * Request-scoped adapter around pi's AgentSession primitives.
38
+ *
39
+ * Xpod restores durable conversation state into pi with replaceMessages() on
40
+ * every run. pi owns the atomic agent loop, tools and streaming events for the
41
+ * current invocation only; its SessionManager is not the Xpod state center.
42
+ */
43
+ class PiAgentRuntimeDriver {
44
+ constructor(options = {}) {
45
+ this.options = options;
46
+ this.git = new GitWorktreeService_1.GitWorktreeService();
47
+ this.warmRuntimes = new Map();
48
+ }
49
+ async *start(input) {
50
+ if (this.options.agentLoopIsolation === 'sandboxed-process') {
51
+ try {
52
+ const workdir = await this.resolveWorkdir(input.threadId, input.config.workspace, input.config);
53
+ const runner = this.options.sandboxedLoopRunner
54
+ ?? ((runInput, runWorkdir) => this.startSandboxedAgentLoop(runInput, runWorkdir));
55
+ for await (const event of runner(input, workdir)) {
56
+ yield event;
57
+ }
58
+ }
59
+ catch (error) {
60
+ yield this.startupErrorToEvent(error);
61
+ }
62
+ return;
63
+ }
64
+ yield* this.startInProcess(input);
65
+ }
66
+ async *startInProcess(input) {
67
+ const queue = new AsyncPushQueue();
68
+ let session;
69
+ try {
70
+ const runtime = await this.getWarmRuntime(input);
71
+ const sessionManager = this.createSessionManager(runtime.pi, input.runId, runtime.workdir);
72
+ const result = await runtime.pi.createAgentSession({
73
+ cwd: runtime.workdir,
74
+ authStorage: runtime.authStorage,
75
+ modelRegistry: runtime.modelRegistry,
76
+ settingsManager: runtime.settingsManager,
77
+ sessionManager,
78
+ resourceLoader: runtime.resourceLoader,
79
+ model: runtime.piConfig.model,
80
+ thinkingLevel: runtime.thinkingLevel,
81
+ tools: runtime.tools,
82
+ });
83
+ session = result.session;
84
+ session.agent.replaceMessages(this.toPiMessages(input.conversation, runtime.piConfig));
85
+ const streamState = {
86
+ lastAssistantText: '',
87
+ assistantTextStreamed: false,
88
+ };
89
+ const unsubscribe = session.subscribe((event) => {
90
+ this.projectPiEvent(event, queue, streamState);
91
+ });
92
+ void session.prompt(input.prompt, { expandPromptTemplates: false, source: 'rpc' }).then(() => {
93
+ if (!streamState.assistantTextStreamed && streamState.lastAssistantText.length > 0) {
94
+ queue.push({ type: 'text', text: streamState.lastAssistantText });
95
+ }
96
+ queue.close();
97
+ }).catch((error) => {
98
+ queue.push({ type: 'error', message: this.formatError(error) });
99
+ queue.close();
100
+ }).finally(() => {
101
+ unsubscribe();
102
+ session?.dispose();
103
+ });
104
+ for await (const event of queue.iterate()) {
105
+ yield event;
106
+ }
107
+ }
108
+ catch (error) {
109
+ session?.dispose();
110
+ yield this.startupErrorToEvent(error);
111
+ }
112
+ }
113
+ startSandboxedAgentLoop(input, workdir) {
114
+ const queue = new AsyncPushQueue();
115
+ const requireSandbox = this.options.requireSandbox ?? true;
116
+ if (requireSandbox && !sandbox_1.SandboxFactory.isAvailable()) {
117
+ queue.push({ type: 'error', message: 'Cloud Agent Runtime requires an OS sandbox, but none is available on this host' });
118
+ queue.close();
119
+ return queue.iterate();
120
+ }
121
+ const child = sandbox_1.SandboxFactory.launch({
122
+ workdir,
123
+ command: process.execPath,
124
+ args: [this.resolveWorkerPath()],
125
+ env: this.workerEnv(),
126
+ isolateNetwork: false,
127
+ });
128
+ if (requireSandbox && !child.sandboxed) {
129
+ child.process.kill();
130
+ queue.push({ type: 'error', message: 'Cloud Agent Runtime refused to run without a sandbox' });
131
+ queue.close();
132
+ return queue.iterate();
133
+ }
134
+ const stderrChunks = [];
135
+ const stderrMaxBytes = 16 * 1024;
136
+ let closed = false;
137
+ const closeOnce = () => {
138
+ if (closed) {
139
+ return;
140
+ }
141
+ closed = true;
142
+ queue.close();
143
+ };
144
+ child.process.stdin?.end(JSON.stringify({
145
+ input,
146
+ options: {
147
+ persistPiSessions: this.options.persistPiSessions === true,
148
+ sessionRootDir: this.options.sessionRootDir,
149
+ },
150
+ }));
151
+ const rl = (0, node_readline_1.createInterface)({ input: child.process.stdout });
152
+ rl.on('line', (line) => {
153
+ if (!line.startsWith(exports.PI_AGENT_WORKER_EVENT_PREFIX)) {
154
+ return;
155
+ }
156
+ const payload = line.slice(exports.PI_AGENT_WORKER_EVENT_PREFIX.length);
157
+ try {
158
+ queue.push(JSON.parse(payload));
159
+ }
160
+ catch (error) {
161
+ queue.push({ type: 'error', message: `Invalid Agent Runtime worker event: ${this.formatError(error)}` });
162
+ }
163
+ });
164
+ child.process.stderr?.on('data', (chunk) => {
165
+ if (Buffer.concat(stderrChunks).length < stderrMaxBytes) {
166
+ stderrChunks.push(chunk);
167
+ }
168
+ });
169
+ child.process.on('error', (error) => {
170
+ queue.push({ type: 'error', message: `Agent Runtime worker failed to start: ${this.formatError(error)}` });
171
+ closeOnce();
172
+ });
173
+ child.process.on('close', (code, signal) => {
174
+ rl.close();
175
+ if (code !== 0) {
176
+ const stderr = Buffer.concat(stderrChunks).toString('utf-8').trim();
177
+ const suffix = stderr ? `: ${stderr}` : signal ? ` (signal ${signal})` : '';
178
+ queue.push({ type: 'error', message: `Agent Runtime worker exited with code ${code ?? 'null'}${suffix}` });
179
+ }
180
+ closeOnce();
181
+ });
182
+ return queue.iterate();
183
+ }
184
+ projectPiEvent(event, queue, state) {
185
+ if (event.type === 'message_update' && event.assistantMessageEvent?.type === 'text_delta') {
186
+ queue.push({ type: 'text', text: event.assistantMessageEvent.delta });
187
+ state.assistantTextStreamed = true;
188
+ return;
189
+ }
190
+ if (event.type === 'message_update' && event.message.role === 'assistant') {
191
+ state.lastAssistantText = this.extractText(event.message.content);
192
+ return;
193
+ }
194
+ if (event.type === 'message_end' && event.message.role === 'assistant') {
195
+ const finalText = this.extractText(event.message.content);
196
+ const alreadyStreamed = state.assistantTextStreamed;
197
+ state.lastAssistantText = '';
198
+ state.assistantTextStreamed = false;
199
+ if (!alreadyStreamed && finalText.length > 0) {
200
+ queue.push({ type: 'text', text: finalText });
201
+ }
202
+ return;
203
+ }
204
+ // pi emits tool_execution_start for its own read/bash/edit/write tools.
205
+ // Those are internal runtime activity, not client-side tool requests.
206
+ }
207
+ resolvePiConfig(config) {
208
+ const baseUrl = config.agentConfig?.baseUrl || (0, platform_ai_config_1.getPlatformApiBaseUrl)();
209
+ const provider = this.resolveProviderId(baseUrl);
210
+ const apiKey = config.agentConfig?.apiKey || (0, platform_ai_config_1.getPlatformApiKey)();
211
+ if (!apiKey) {
212
+ throw new Error('No API key configured for pi Agent Runtime. Store the agent credential in the Pod or set DEFAULT_API_KEY for local development.');
213
+ }
214
+ const resolvedBaseUrl = baseUrl || (0, provider_registry_1.getDefaultBaseUrl)(provider);
215
+ const modelId = config.agentConfig?.model || (0, platform_ai_config_1.getPlatformDefaultModel)();
216
+ const api = this.resolveApiForBaseUrl(resolvedBaseUrl);
217
+ return {
218
+ provider,
219
+ apiKey,
220
+ api,
221
+ baseUrl: resolvedBaseUrl,
222
+ model: {
223
+ id: modelId,
224
+ name: modelId,
225
+ api,
226
+ provider,
227
+ baseUrl: resolvedBaseUrl,
228
+ reasoning: false,
229
+ input: ['text'],
230
+ cost: {
231
+ input: 0,
232
+ output: 0,
233
+ cacheRead: 0,
234
+ cacheWrite: 0,
235
+ },
236
+ contextWindow: 128_000,
237
+ maxTokens: 8192,
238
+ compat: api === 'openai-completions'
239
+ ? {
240
+ supportsStore: false,
241
+ supportsDeveloperRole: false,
242
+ supportsReasoningEffort: false,
243
+ }
244
+ : undefined,
245
+ },
246
+ };
247
+ }
248
+ resolveProviderId(baseUrl) {
249
+ const configured = (0, platform_ai_config_1.getPlatformProviderId)();
250
+ if (configured && configured !== 'undefineds') {
251
+ return configured;
252
+ }
253
+ if (!baseUrl) {
254
+ return 'xpod';
255
+ }
256
+ try {
257
+ const host = new URL(baseUrl).hostname;
258
+ if (host.includes('openai.com'))
259
+ return 'openai';
260
+ if (host.includes('anthropic.com'))
261
+ return 'anthropic';
262
+ if (host.includes('openrouter.ai'))
263
+ return 'openrouter';
264
+ if (host.includes('deepseek.com'))
265
+ return 'deepseek';
266
+ if (host.includes('mistral.ai'))
267
+ return 'mistral';
268
+ if (host === 'localhost' || host === '127.0.0.1')
269
+ return 'ollama';
270
+ }
271
+ catch {
272
+ // fall through to xpod
273
+ }
274
+ return 'xpod';
275
+ }
276
+ resolveApiForBaseUrl(baseUrl) {
277
+ try {
278
+ const host = new URL(baseUrl).hostname;
279
+ return host === 'api.openai.com' ? 'openai-responses' : 'openai-completions';
280
+ }
281
+ catch {
282
+ return 'openai-completions';
283
+ }
284
+ }
285
+ resolveThinkingLevel(config) {
286
+ const level = config.agentConfig?.thinkingLevel;
287
+ return level === 'minimal' || level === 'low' || level === 'medium' || level === 'high' || level === 'xhigh'
288
+ ? level
289
+ : 'off';
290
+ }
291
+ resolveTools(pi, workdir, config) {
292
+ const permissionMode = config.agentConfig?.permissionMode;
293
+ const allowed = new Set(config.agentConfig?.allowedTools?.map((tool) => tool.toLowerCase()) ?? []);
294
+ const disallowed = new Set(config.agentConfig?.disallowedTools?.map((tool) => tool.toLowerCase()) ?? []);
295
+ const baseTools = permissionMode === 'plan' || allowed.size > 0
296
+ ? pi.createReadOnlyTools(workdir)
297
+ : pi.createCodingTools(workdir);
298
+ return baseTools.filter((tool) => {
299
+ const name = tool.name.toLowerCase();
300
+ if (disallowed.has(name)) {
301
+ return false;
302
+ }
303
+ return allowed.size === 0 || allowed.has(name);
304
+ });
305
+ }
306
+ async getWarmRuntime(input) {
307
+ const pi = await this.loadPiSdk();
308
+ const workdir = await this.resolveWorkdir(input.threadId, input.config.workspace, input.config);
309
+ const key = this.warmRuntimeKey(workdir, input.config);
310
+ const existing = this.warmRuntimes.get(key);
311
+ if (existing) {
312
+ return existing;
313
+ }
314
+ const created = this.createWarmRuntime(pi, workdir, input.config).catch((error) => {
315
+ this.warmRuntimes.delete(key);
316
+ throw error;
317
+ });
318
+ this.warmRuntimes.set(key, created);
319
+ return created;
320
+ }
321
+ async createWarmRuntime(pi, workdir, config) {
322
+ const piConfig = this.resolvePiConfig(config);
323
+ const authStorage = pi.AuthStorage.inMemory();
324
+ authStorage.setRuntimeApiKey(piConfig.provider, piConfig.apiKey);
325
+ const modelRegistry = new pi.ModelRegistry(authStorage, undefined);
326
+ modelRegistry.registerProvider(piConfig.provider, {
327
+ baseUrl: piConfig.baseUrl,
328
+ apiKey: piConfig.apiKey,
329
+ api: piConfig.api,
330
+ models: [piConfig.model],
331
+ });
332
+ const thinkingLevel = this.resolveThinkingLevel(config);
333
+ const settingsManager = pi.SettingsManager.inMemory({
334
+ defaultProvider: piConfig.provider,
335
+ defaultModel: piConfig.model.id,
336
+ defaultThinkingLevel: thinkingLevel,
337
+ });
338
+ const resourceLoader = new pi.DefaultResourceLoader({
339
+ cwd: workdir,
340
+ settingsManager,
341
+ systemPrompt: config.agentConfig?.systemPrompt,
342
+ appendSystemPrompt: config.agentConfig?.skillsContent,
343
+ noExtensions: true,
344
+ noSkills: true,
345
+ noPromptTemplates: true,
346
+ noThemes: true,
347
+ });
348
+ await resourceLoader.reload();
349
+ return {
350
+ pi,
351
+ workdir,
352
+ piConfig,
353
+ thinkingLevel,
354
+ authStorage,
355
+ modelRegistry,
356
+ settingsManager,
357
+ resourceLoader,
358
+ tools: this.resolveTools(pi, workdir, config),
359
+ };
360
+ }
361
+ warmRuntimeKey(workdir, config) {
362
+ const agent = config.agentConfig;
363
+ return JSON.stringify({
364
+ workdir,
365
+ baseUrl: agent?.baseUrl ?? (0, platform_ai_config_1.getPlatformApiBaseUrl)(),
366
+ model: agent?.model ?? (0, platform_ai_config_1.getPlatformDefaultModel)(),
367
+ apiKeyHash: this.hashSecret(agent?.apiKey ?? (0, platform_ai_config_1.getPlatformApiKey)()),
368
+ systemPrompt: agent?.systemPrompt ?? '',
369
+ skillsContent: agent?.skillsContent ?? '',
370
+ permissionMode: agent?.permissionMode ?? '',
371
+ allowedTools: agent?.allowedTools ?? [],
372
+ disallowedTools: agent?.disallowedTools ?? [],
373
+ persistPiSessions: this.options.persistPiSessions === true,
374
+ agentLoopIsolation: this.options.agentLoopIsolation ?? 'in-process',
375
+ thinkingLevel: this.resolveThinkingLevel(config),
376
+ });
377
+ }
378
+ hashSecret(value) {
379
+ return value
380
+ ? crypto.createHash('sha256').update(value).digest('hex').slice(0, 16)
381
+ : '';
382
+ }
383
+ toPiMessages(conversation, config) {
384
+ return conversation.map((message) => {
385
+ if (message.role === 'user') {
386
+ return {
387
+ role: 'user',
388
+ content: [{ type: 'text', text: message.text }],
389
+ timestamp: message.createdAt * 1000,
390
+ };
391
+ }
392
+ return {
393
+ role: 'assistant',
394
+ content: [{ type: 'text', text: message.text }],
395
+ api: config.api,
396
+ provider: config.provider,
397
+ model: config.model.id,
398
+ usage: {
399
+ input: 0,
400
+ output: 0,
401
+ cacheRead: 0,
402
+ cacheWrite: 0,
403
+ totalTokens: 0,
404
+ cost: {
405
+ input: 0,
406
+ output: 0,
407
+ cacheRead: 0,
408
+ cacheWrite: 0,
409
+ total: 0,
410
+ },
411
+ },
412
+ stopReason: 'stop',
413
+ timestamp: message.createdAt * 1000,
414
+ };
415
+ });
416
+ }
417
+ async resolveWorkdir(threadId, workspace, config) {
418
+ const url = new URL(workspace);
419
+ let workdir;
420
+ if (url.protocol === 'http:' || url.protocol === 'https:') {
421
+ const mapped = this.mapPodUrlToLocalPath(workspace);
422
+ if (!mapped || !fs.existsSync(mapped)) {
423
+ throw new WaitingRunnerError(workspace, `Workspace is not mounted on this runner: ${workspace}`);
424
+ }
425
+ workdir = mapped;
426
+ }
427
+ else if (url.protocol === 'file:') {
428
+ if (!this.canResolveFileWorkspace(url)) {
429
+ throw new WaitingRunnerError(workspace, `Waiting for a runner that can resolve workspace ${workspace}`);
430
+ }
431
+ workdir = decodeURIComponent(url.pathname);
432
+ if (!fs.existsSync(workdir)) {
433
+ throw new Error(`workspace URI does not exist on this runner: ${workspace}`);
434
+ }
435
+ }
436
+ else {
437
+ throw new Error(`Unsupported workspace URI protocol: ${url.protocol}`);
438
+ }
439
+ const worktree = config?.worktree;
440
+ if (!worktree) {
441
+ return workdir;
442
+ }
443
+ const repoRoot = workdir;
444
+ if (worktree.mode === 'existing') {
445
+ if (!fs.existsSync(worktree.path)) {
446
+ throw new Error(`worktree.path not found: ${worktree.path}`);
447
+ }
448
+ return worktree.path;
449
+ }
450
+ await this.git.assertGitRepo(repoRoot);
451
+ const root = path.join(repoRoot, '.xpod-worktrees');
452
+ const worktreePath = path.join(root, threadId);
453
+ if (fs.existsSync(worktreePath)) {
454
+ return worktreePath;
455
+ }
456
+ await this.git.createWorktree({
457
+ repoPath: repoRoot,
458
+ worktreePath,
459
+ baseRef: worktree.baseRef ?? 'main',
460
+ branch: worktree.branch,
461
+ });
462
+ return worktreePath;
463
+ }
464
+ canResolveFileWorkspace(url) {
465
+ const authority = url.hostname;
466
+ if (!authority || authority === 'localhost') {
467
+ return true;
468
+ }
469
+ const configured = process.env.XPOD_RUNNER_AUTHORITY?.trim();
470
+ return authority === configured || authority === os.hostname();
471
+ }
472
+ mapPodUrlToLocalPath(rootUrl) {
473
+ const rootFilePath = process.env.CSS_ROOT_FILE_PATH;
474
+ const baseUrl = process.env.CSS_BASE_URL;
475
+ if (!rootFilePath || !baseUrl) {
476
+ return undefined;
477
+ }
478
+ try {
479
+ const base = new URL(baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);
480
+ const pod = new URL(rootUrl.endsWith('/') ? rootUrl : `${rootUrl}/`);
481
+ if (base.origin !== pod.origin) {
482
+ return undefined;
483
+ }
484
+ if (!pod.pathname.startsWith(base.pathname)) {
485
+ return undefined;
486
+ }
487
+ const relativePath = decodeURIComponent(pod.pathname.slice(base.pathname.length)).replace(/\/+$/, '');
488
+ const resolvedRoot = path.resolve(rootFilePath);
489
+ const resolved = path.resolve(resolvedRoot, relativePath);
490
+ if (resolved !== resolvedRoot && !resolved.startsWith(`${resolvedRoot}${path.sep}`)) {
491
+ return undefined;
492
+ }
493
+ return resolved;
494
+ }
495
+ catch {
496
+ return undefined;
497
+ }
498
+ }
499
+ createSessionManager(pi, runId, workdir) {
500
+ if (this.options.persistPiSessions) {
501
+ return pi.SessionManager.create(workdir, this.resolveSessionDir(runId, workdir));
502
+ }
503
+ return pi.SessionManager.inMemory(workdir);
504
+ }
505
+ resolveSessionDir(runId, workdir) {
506
+ const root = this.options.sessionRootDir ?? path.join(os.tmpdir(), 'xpod-pi-sessions');
507
+ const hash = crypto.createHash('sha256').update(`${workdir}:${runId}`).digest('hex').slice(0, 20);
508
+ return path.join(root, hash);
509
+ }
510
+ resolveWorkerPath() {
511
+ if (this.options.workerPath) {
512
+ return this.options.workerPath;
513
+ }
514
+ return path.join(__dirname, `PiAgentRuntimeWorker${path.extname(__filename)}`);
515
+ }
516
+ workerEnv() {
517
+ const env = {};
518
+ for (const [key, value] of Object.entries(process.env)) {
519
+ if (typeof value === 'string') {
520
+ env[key] = value;
521
+ }
522
+ }
523
+ env.XPOD_AGENT_LOOP_WORKER = '1';
524
+ return env;
525
+ }
526
+ extractText(content) {
527
+ if (typeof content === 'string') {
528
+ return content;
529
+ }
530
+ if (!Array.isArray(content)) {
531
+ return '';
532
+ }
533
+ return content
534
+ .map((part) => {
535
+ if (part && typeof part === 'object' && part.type === 'text') {
536
+ return typeof part.text === 'string' ? part.text : '';
537
+ }
538
+ return '';
539
+ })
540
+ .join('');
541
+ }
542
+ formatError(error) {
543
+ return error instanceof Error ? error.message : String(error);
544
+ }
545
+ startupErrorToEvent(error) {
546
+ if (error instanceof WaitingRunnerError) {
547
+ return {
548
+ type: 'waiting_runner',
549
+ workspace: error.workspace,
550
+ message: error.message,
551
+ };
552
+ }
553
+ return { type: 'error', message: this.formatError(error) };
554
+ }
555
+ async loadPiSdk() {
556
+ if (this.options.piSdk) {
557
+ return this.options.piSdk;
558
+ }
559
+ if (PiAgentRuntimeDriver.sdkPromise) {
560
+ return PiAgentRuntimeDriver.sdkPromise;
561
+ }
562
+ // Keep a native dynamic import so the CommonJS build can lazily load pi's
563
+ // ESM-only package instead of requiring it during CSS component discovery.
564
+ const nativeImport = new Function('specifier', 'return import(specifier)');
565
+ PiAgentRuntimeDriver.sdkPromise = nativeImport('@mariozechner/pi-coding-agent');
566
+ return PiAgentRuntimeDriver.sdkPromise;
567
+ }
568
+ }
569
+ exports.PiAgentRuntimeDriver = PiAgentRuntimeDriver;
570
+ exports.PI_AGENT_WORKER_EVENT_PREFIX = 'XPOD_AGENT_EVENT ';
571
+ class WaitingRunnerError extends Error {
572
+ constructor(workspace, message) {
573
+ super(message);
574
+ this.workspace = workspace;
575
+ }
576
+ }
577
+ class AsyncPushQueue {
578
+ constructor() {
579
+ this.items = [];
580
+ this.resolvers = [];
581
+ this.closed = false;
582
+ }
583
+ push(item) {
584
+ if (this.closed) {
585
+ return;
586
+ }
587
+ this.items.push(item);
588
+ const resolver = this.resolvers.shift();
589
+ resolver?.();
590
+ }
591
+ close() {
592
+ if (this.closed) {
593
+ return;
594
+ }
595
+ this.closed = true;
596
+ for (const resolver of this.resolvers) {
597
+ resolver();
598
+ }
599
+ this.resolvers = [];
600
+ }
601
+ async *iterate() {
602
+ while (true) {
603
+ if (this.items.length > 0) {
604
+ yield this.items.shift();
605
+ continue;
606
+ }
607
+ if (this.closed) {
608
+ return;
609
+ }
610
+ await new Promise((resolve) => this.resolvers.push(resolve));
611
+ }
612
+ }
613
+ }
614
+ //# sourceMappingURL=PiAgentRuntimeDriver.js.map