@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
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskService = void 0;
4
+ const types_1 = require("../chatkit/types");
5
+ const store_1 = require("../runs/store");
6
+ const types_2 = require("../workspace/types");
7
+ const TaskMaterializer_1 = require("./TaskMaterializer");
8
+ const schema_1 = require("./schema");
9
+ const store_2 = require("./store");
10
+ class TaskService {
11
+ constructor(options) {
12
+ this.store = options.store;
13
+ this.materializer = new TaskMaterializer_1.TaskMaterializer({
14
+ store: options.store,
15
+ executionBackend: options.executionBackend,
16
+ executeRuns: options.executeRuns,
17
+ });
18
+ }
19
+ async createTask(input, context) {
20
+ if (!input.prompt.trim()) {
21
+ throw new Error('Task prompt is required');
22
+ }
23
+ if (!(0, types_2.isWorkspaceUri)(input.workspace)) {
24
+ throw new Error('Task workspace URI is required');
25
+ }
26
+ const triggerKind = input.triggerKind ?? schema_1.TaskTriggerKind.ONCE;
27
+ this.validateTrigger(input, triggerKind);
28
+ const authBinding = this.normalizeAuthBinding(input.authBinding);
29
+ const now = (0, types_1.nowTimestamp)();
30
+ const taskId = (0, store_2.generateTaskResourceId)((0, types_1.generateId)('task'));
31
+ const surfaceId = this.normalizeSurfaceId(input.surfaceId ?? 'default');
32
+ const thread = await this.createTaskThread({
33
+ taskId,
34
+ surfaceId,
35
+ title: input.title,
36
+ workspace: input.workspace,
37
+ runner: input.runner ?? 'pi:pi',
38
+ metadata: input.metadata,
39
+ context,
40
+ });
41
+ const task = {
42
+ id: taskId,
43
+ surfaceId,
44
+ title: input.title,
45
+ prompt: input.prompt,
46
+ thread: this.resolveThreadUri(thread, context),
47
+ workspace: input.workspace,
48
+ runner: input.runner ?? 'pi:pi',
49
+ status: schema_1.TaskStatus.ACTIVE,
50
+ triggerKind,
51
+ cron: input.cron,
52
+ intervalSeconds: input.intervalSeconds,
53
+ eventName: input.eventName,
54
+ nextRunAt: this.initialNextRunAt(input, triggerKind, now),
55
+ authBinding,
56
+ metadata: {
57
+ ...(input.metadata ?? {}),
58
+ authBinding,
59
+ },
60
+ createdAt: now,
61
+ updatedAt: now,
62
+ };
63
+ await this.store.saveTask(task, context);
64
+ if (triggerKind === schema_1.TaskTriggerKind.ONCE) {
65
+ const materialized = await this.materializer.materialize({
66
+ task,
67
+ context,
68
+ trigger: {
69
+ kind: 'once',
70
+ scheduledFor: now,
71
+ },
72
+ });
73
+ return { task: materialized.task, run: materialized.run };
74
+ }
75
+ return { task };
76
+ }
77
+ async loadTask(taskId, context) {
78
+ return this.store.loadTask(taskId, context);
79
+ }
80
+ async listTasks(context) {
81
+ return this.store.listTasks({}, context);
82
+ }
83
+ async materializeDueTasks(context, options = {}) {
84
+ const now = options.now ?? (0, types_1.nowTimestamp)();
85
+ const dueTasks = await this.store.listTasks({
86
+ status: schema_1.TaskStatus.ACTIVE,
87
+ dueAt: now,
88
+ limit: options.limit,
89
+ }, context);
90
+ const materialized = [];
91
+ for (const task of dueTasks) {
92
+ if (task.triggerKind !== schema_1.TaskTriggerKind.INTERVAL && task.triggerKind !== schema_1.TaskTriggerKind.CRON) {
93
+ continue;
94
+ }
95
+ materialized.push(await this.materializer.materialize({
96
+ task,
97
+ context,
98
+ trigger: {
99
+ kind: task.triggerKind,
100
+ scheduledFor: task.nextRunAt ?? now,
101
+ },
102
+ }));
103
+ }
104
+ return materialized;
105
+ }
106
+ async materializeEventTasks(input) {
107
+ const tasks = await this.store.listTasks({
108
+ status: schema_1.TaskStatus.ACTIVE,
109
+ triggerKind: schema_1.TaskTriggerKind.EVENT,
110
+ eventName: input.eventName,
111
+ }, input.context);
112
+ const materialized = [];
113
+ for (const task of tasks) {
114
+ materialized.push(await this.materializer.materialize({
115
+ task,
116
+ context: input.context,
117
+ trigger: {
118
+ kind: 'event',
119
+ eventName: input.eventName,
120
+ payload: input.payload,
121
+ },
122
+ }));
123
+ }
124
+ return materialized;
125
+ }
126
+ async createTaskThread(input) {
127
+ const now = (0, types_1.nowTimestamp)();
128
+ const thread = {
129
+ id: `task/${input.surfaceId}/index.ttl#${(0, types_1.generateId)('thread')}`,
130
+ title: input.title,
131
+ status: { type: 'active' },
132
+ workspace: input.workspace,
133
+ created_at: now,
134
+ updated_at: now,
135
+ metadata: {
136
+ ...(input.metadata ?? {}),
137
+ commandKind: 'task',
138
+ surface_id: input.surfaceId,
139
+ chat_id: input.surfaceId,
140
+ taskId: input.taskId,
141
+ runtime: {
142
+ workspace: input.workspace,
143
+ runner: this.parseRunnerMetadata(input.runner),
144
+ },
145
+ },
146
+ };
147
+ await this.store.saveThread(thread, input.context);
148
+ return thread;
149
+ }
150
+ validateTrigger(input, triggerKind) {
151
+ if (!input.authBinding) {
152
+ throw new Error('Task auth binding is required');
153
+ }
154
+ if (triggerKind === schema_1.TaskTriggerKind.INTERVAL && (!input.intervalSeconds || input.intervalSeconds <= 0)) {
155
+ throw new Error('intervalSeconds must be a positive number for interval tasks');
156
+ }
157
+ if (triggerKind === schema_1.TaskTriggerKind.CRON && !input.cron?.trim()) {
158
+ throw new Error('cron is required for cron tasks');
159
+ }
160
+ if (triggerKind === schema_1.TaskTriggerKind.EVENT && !input.eventName?.trim()) {
161
+ throw new Error('eventName is required for event tasks');
162
+ }
163
+ }
164
+ normalizeAuthBinding(input) {
165
+ if (!input.id.trim()) {
166
+ throw new Error('Task auth binding id is required');
167
+ }
168
+ if (!input.webId.trim()) {
169
+ throw new Error('Task auth binding webId is required');
170
+ }
171
+ if (!input.clientId.trim()) {
172
+ throw new Error('Task auth binding clientId is required');
173
+ }
174
+ return { ...input };
175
+ }
176
+ initialNextRunAt(input, triggerKind, now) {
177
+ if (triggerKind === schema_1.TaskTriggerKind.INTERVAL) {
178
+ return input.startAt ?? now;
179
+ }
180
+ if (triggerKind === schema_1.TaskTriggerKind.CRON) {
181
+ return input.startAt ?? now;
182
+ }
183
+ return undefined;
184
+ }
185
+ parseRunnerMetadata(runner) {
186
+ const [protocol, type] = runner.split(':');
187
+ return {
188
+ protocol: protocol === 'acp' ? 'acp' : 'pi',
189
+ type: type || 'pi',
190
+ };
191
+ }
192
+ normalizeSurfaceId(value) {
193
+ return value.trim().replace(/[^A-Za-z0-9._~-]+/g, '-').replace(/^-+|-+$/g, '') || 'default';
194
+ }
195
+ resolveThreadUri(thread, context) {
196
+ const podBaseUrl = this.resolvePodBaseUrl(context);
197
+ const surfaceId = typeof thread.metadata?.surface_id === 'string'
198
+ ? thread.metadata.surface_id
199
+ : (typeof thread.metadata?.chat_id === 'string' ? thread.metadata.chat_id : types_1.DEFAULT_THREAD_CHAT_ID);
200
+ if (podBaseUrl) {
201
+ if (thread.id.includes('#') && !thread.id.startsWith('#')) {
202
+ return (0, store_1.resolveDataResourceIri)(podBaseUrl, thread.id);
203
+ }
204
+ return `${podBaseUrl}/.data/task/${surfaceId}/index.ttl#${thread.id}`;
205
+ }
206
+ return `urn:xpod:thread:task:${encodeURIComponent(surfaceId)}:${encodeURIComponent(thread.id)}`;
207
+ }
208
+ resolvePodBaseUrl(context) {
209
+ const webId = this.resolveWebId(context);
210
+ if (!webId) {
211
+ return undefined;
212
+ }
213
+ try {
214
+ const url = new URL(webId);
215
+ url.hash = '';
216
+ url.search = '';
217
+ const normalizedPath = url.pathname.replace(/\/+$/, '');
218
+ if (!normalizedPath.endsWith('/profile/card')) {
219
+ return undefined;
220
+ }
221
+ const podPath = normalizedPath.slice(0, -'/profile/card'.length) || '/';
222
+ url.pathname = podPath;
223
+ return url.toString().replace(/\/$/, '');
224
+ }
225
+ catch {
226
+ return undefined;
227
+ }
228
+ }
229
+ resolveWebId(context) {
230
+ const auth = context.auth;
231
+ return typeof auth?.webId === 'string' ? auth.webId : undefined;
232
+ }
233
+ }
234
+ exports.TaskService = TaskService;
235
+ //# sourceMappingURL=TaskService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskService.js","sourceRoot":"","sources":["../../../src/api/tasks/TaskService.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChatKitStore, StoreContext } from '../chatkit/store';\nimport type { ThreadMetadata } from '../chatkit/types';\nimport {\n DEFAULT_THREAD_CHAT_ID,\n generateId,\n nowTimestamp,\n} from '../chatkit/types';\nimport type { RunExecutionBackend } from '../runs/RunExecutionBackend';\nimport { resolveDataResourceIri, type RunStore } from '../runs/store';\nimport { isWorkspaceUri, type WorkspaceUri } from '../workspace/types';\nimport { TaskMaterializer, type MaterializedTaskRun } from './TaskMaterializer';\nimport { TaskStatus, TaskTriggerKind, type TaskTriggerKindType } from './schema';\nimport type { TaskAuthBindingSnapshot } from './TaskAuthBinding';\nimport { generateTaskResourceId, type TaskRecordData, type TaskStore } from './store';\n\nexport interface CreateTaskInput {\n surfaceId?: string;\n title?: string;\n prompt: string;\n workspace: WorkspaceUri;\n runner?: string;\n triggerKind?: TaskTriggerKindType;\n cron?: string;\n intervalSeconds?: number;\n eventName?: string;\n startAt?: number;\n authBinding: TaskAuthBindingSnapshot;\n metadata?: Record<string, unknown>;\n}\n\nexport interface CreateTaskResult {\n task: TaskRecordData;\n run?: MaterializedTaskRun['run'];\n}\n\nexport interface TaskServiceOptions<TContext = StoreContext> {\n store: ChatKitStore<TContext> & RunStore<TContext> & TaskStore<TContext>;\n executionBackend?: RunExecutionBackend;\n executeRuns?: boolean;\n}\n\nexport class TaskService<TContext = StoreContext> {\n private readonly store: ChatKitStore<TContext> & RunStore<TContext> & TaskStore<TContext>;\n private readonly materializer: TaskMaterializer<TContext>;\n\n public constructor(options: TaskServiceOptions<TContext>) {\n this.store = options.store;\n this.materializer = new TaskMaterializer({\n store: options.store,\n executionBackend: options.executionBackend,\n executeRuns: options.executeRuns,\n });\n }\n\n public async createTask(input: CreateTaskInput, context: TContext): Promise<CreateTaskResult> {\n if (!input.prompt.trim()) {\n throw new Error('Task prompt is required');\n }\n if (!isWorkspaceUri(input.workspace)) {\n throw new Error('Task workspace URI is required');\n }\n\n const triggerKind = input.triggerKind ?? TaskTriggerKind.ONCE;\n this.validateTrigger(input, triggerKind);\n const authBinding = this.normalizeAuthBinding(input.authBinding);\n\n const now = nowTimestamp();\n const taskId = generateTaskResourceId(generateId('task'));\n const surfaceId = this.normalizeSurfaceId(input.surfaceId ?? 'default');\n const thread = await this.createTaskThread({\n taskId,\n surfaceId,\n title: input.title,\n workspace: input.workspace,\n runner: input.runner ?? 'pi:pi',\n metadata: input.metadata,\n context,\n });\n\n const task: TaskRecordData = {\n id: taskId,\n surfaceId,\n title: input.title,\n prompt: input.prompt,\n thread: this.resolveThreadUri(thread, context),\n workspace: input.workspace,\n runner: input.runner ?? 'pi:pi',\n status: TaskStatus.ACTIVE,\n triggerKind,\n cron: input.cron,\n intervalSeconds: input.intervalSeconds,\n eventName: input.eventName,\n nextRunAt: this.initialNextRunAt(input, triggerKind, now),\n authBinding,\n metadata: {\n ...(input.metadata ?? {}),\n authBinding,\n },\n createdAt: now,\n updatedAt: now,\n };\n\n await this.store.saveTask(task, context);\n\n if (triggerKind === TaskTriggerKind.ONCE) {\n const materialized = await this.materializer.materialize({\n task,\n context,\n trigger: {\n kind: 'once',\n scheduledFor: now,\n },\n });\n return { task: materialized.task, run: materialized.run };\n }\n\n return { task };\n }\n\n public async loadTask(taskId: string, context: TContext): Promise<TaskRecordData> {\n return this.store.loadTask(taskId, context);\n }\n\n public async listTasks(context: TContext): Promise<TaskRecordData[]> {\n return this.store.listTasks({}, context);\n }\n\n public async materializeDueTasks(\n context: TContext,\n options: { now?: number; limit?: number } = {},\n ): Promise<MaterializedTaskRun[]> {\n const now = options.now ?? nowTimestamp();\n const dueTasks = await this.store.listTasks({\n status: TaskStatus.ACTIVE,\n dueAt: now,\n limit: options.limit,\n }, context);\n\n const materialized: MaterializedTaskRun[] = [];\n for (const task of dueTasks) {\n if (task.triggerKind !== TaskTriggerKind.INTERVAL && task.triggerKind !== TaskTriggerKind.CRON) {\n continue;\n }\n materialized.push(await this.materializer.materialize({\n task,\n context,\n trigger: {\n kind: task.triggerKind,\n scheduledFor: task.nextRunAt ?? now,\n },\n }));\n }\n return materialized;\n }\n\n public async materializeEventTasks(input: {\n eventName: string;\n payload?: Record<string, unknown>;\n context: TContext;\n }): Promise<MaterializedTaskRun[]> {\n const tasks = await this.store.listTasks({\n status: TaskStatus.ACTIVE,\n triggerKind: TaskTriggerKind.EVENT,\n eventName: input.eventName,\n }, input.context);\n\n const materialized: MaterializedTaskRun[] = [];\n for (const task of tasks) {\n materialized.push(await this.materializer.materialize({\n task,\n context: input.context,\n trigger: {\n kind: 'event',\n eventName: input.eventName,\n payload: input.payload,\n },\n }));\n }\n return materialized;\n }\n\n private async createTaskThread(input: {\n taskId: string;\n surfaceId: string;\n title?: string;\n workspace: WorkspaceUri;\n runner: string;\n metadata?: Record<string, unknown>;\n context: TContext;\n }): Promise<ThreadMetadata> {\n const now = nowTimestamp();\n const thread: ThreadMetadata = {\n id: `task/${input.surfaceId}/index.ttl#${generateId('thread')}`,\n title: input.title,\n status: { type: 'active' },\n workspace: input.workspace,\n created_at: now,\n updated_at: now,\n metadata: {\n ...(input.metadata ?? {}),\n commandKind: 'task',\n surface_id: input.surfaceId,\n chat_id: input.surfaceId,\n taskId: input.taskId,\n runtime: {\n workspace: input.workspace,\n runner: this.parseRunnerMetadata(input.runner),\n },\n },\n };\n await this.store.saveThread(thread, input.context);\n return thread;\n }\n\n private validateTrigger(input: CreateTaskInput, triggerKind: TaskTriggerKindType): void {\n if (!input.authBinding) {\n throw new Error('Task auth binding is required');\n }\n if (triggerKind === TaskTriggerKind.INTERVAL && (!input.intervalSeconds || input.intervalSeconds <= 0)) {\n throw new Error('intervalSeconds must be a positive number for interval tasks');\n }\n if (triggerKind === TaskTriggerKind.CRON && !input.cron?.trim()) {\n throw new Error('cron is required for cron tasks');\n }\n if (triggerKind === TaskTriggerKind.EVENT && !input.eventName?.trim()) {\n throw new Error('eventName is required for event tasks');\n }\n }\n\n private normalizeAuthBinding(input: TaskAuthBindingSnapshot): TaskAuthBindingSnapshot {\n if (!input.id.trim()) {\n throw new Error('Task auth binding id is required');\n }\n if (!input.webId.trim()) {\n throw new Error('Task auth binding webId is required');\n }\n if (!input.clientId.trim()) {\n throw new Error('Task auth binding clientId is required');\n }\n return { ...input };\n }\n\n private initialNextRunAt(input: CreateTaskInput, triggerKind: TaskTriggerKindType, now: number): number | undefined {\n if (triggerKind === TaskTriggerKind.INTERVAL) {\n return input.startAt ?? now;\n }\n if (triggerKind === TaskTriggerKind.CRON) {\n return input.startAt ?? now;\n }\n return undefined;\n }\n\n private parseRunnerMetadata(runner: string): { protocol: string; type: string } {\n const [protocol, type] = runner.split(':');\n return {\n protocol: protocol === 'acp' ? 'acp' : 'pi',\n type: type || 'pi',\n };\n }\n\n private normalizeSurfaceId(value: string): string {\n return value.trim().replace(/[^A-Za-z0-9._~-]+/g, '-').replace(/^-+|-+$/g, '') || 'default';\n }\n\n private resolveThreadUri(thread: ThreadMetadata, context: TContext): string {\n const podBaseUrl = this.resolvePodBaseUrl(context);\n const surfaceId = typeof thread.metadata?.surface_id === 'string'\n ? thread.metadata.surface_id\n : (typeof thread.metadata?.chat_id === 'string' ? thread.metadata.chat_id : DEFAULT_THREAD_CHAT_ID);\n if (podBaseUrl) {\n if (thread.id.includes('#') && !thread.id.startsWith('#')) {\n return resolveDataResourceIri(podBaseUrl, thread.id);\n }\n return `${podBaseUrl}/.data/task/${surfaceId}/index.ttl#${thread.id}`;\n }\n return `urn:xpod:thread:task:${encodeURIComponent(surfaceId)}:${encodeURIComponent(thread.id)}`;\n }\n\n private resolvePodBaseUrl(context: TContext): string | undefined {\n const webId = this.resolveWebId(context);\n if (!webId) {\n return undefined;\n }\n try {\n const url = new URL(webId);\n url.hash = '';\n url.search = '';\n const normalizedPath = url.pathname.replace(/\\/+$/, '');\n if (!normalizedPath.endsWith('/profile/card')) {\n return undefined;\n }\n const podPath = normalizedPath.slice(0, -'/profile/card'.length) || '/';\n url.pathname = podPath;\n return url.toString().replace(/\\/$/, '');\n } catch {\n return undefined;\n }\n }\n\n private resolveWebId(context: TContext): string | undefined {\n const auth = (context as Record<string, unknown>).auth as { webId?: unknown } | undefined;\n return typeof auth?.webId === 'string' ? auth.webId : undefined;\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export { Task, TaskStatus, TaskTriggerKind, type TaskRecord, type TaskStatusType, type TaskTriggerKindType, } from './schema';
2
+ export { type TaskListOptions, type TaskRecordData, type TaskStore, } from './store';
3
+ export { TaskMaterializer, type MaterializedTaskRun, type TaskMaterializerOptions, } from './TaskMaterializer';
4
+ export { TaskService, type CreateTaskInput, type CreateTaskResult, type TaskServiceOptions, } from './TaskService';
5
+ export { TASK_AUTH_CREDENTIAL_SERVICE, TaskAuthBindingKind, TaskAuthBindingService, TaskAuthBindingStatus, encodeClientCredentialsApiKey, parseClientCredentialsApiKey, type CreateTaskAuthBindingInput, type TaskAuthBindingKindType, type TaskAuthBindingRepository, type TaskAuthBindingServiceOptions, type TaskAuthBindingSnapshot, type TaskAuthBindingStatusType, type TaskAuthCredentialRecord, } from './TaskAuthBinding';
6
+ export { InngestTaskScheduler, XPOD_TASK_MATERIALIZE_DUE_EVENT, XPOD_TASK_EVENT, XPOD_TASK_EVENT_FUNCTION_ID, XPOD_TASK_MATERIALIZE_DUE_FUNCTION_ID, type XpodTaskMaterializeDueEvent, type XpodTaskMaterializeDueEventData, type XpodTaskEvent, type XpodTaskEventData, type InngestTaskSchedulerOptions, } from './InngestTaskScheduler';
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XPOD_TASK_MATERIALIZE_DUE_FUNCTION_ID = exports.XPOD_TASK_EVENT_FUNCTION_ID = exports.XPOD_TASK_EVENT = exports.XPOD_TASK_MATERIALIZE_DUE_EVENT = exports.InngestTaskScheduler = exports.parseClientCredentialsApiKey = exports.encodeClientCredentialsApiKey = exports.TaskAuthBindingStatus = exports.TaskAuthBindingService = exports.TaskAuthBindingKind = exports.TASK_AUTH_CREDENTIAL_SERVICE = exports.TaskService = exports.TaskMaterializer = exports.TaskTriggerKind = exports.TaskStatus = exports.Task = void 0;
4
+ var schema_1 = require("./schema");
5
+ Object.defineProperty(exports, "Task", { enumerable: true, get: function () { return schema_1.Task; } });
6
+ Object.defineProperty(exports, "TaskStatus", { enumerable: true, get: function () { return schema_1.TaskStatus; } });
7
+ Object.defineProperty(exports, "TaskTriggerKind", { enumerable: true, get: function () { return schema_1.TaskTriggerKind; } });
8
+ var TaskMaterializer_1 = require("./TaskMaterializer");
9
+ Object.defineProperty(exports, "TaskMaterializer", { enumerable: true, get: function () { return TaskMaterializer_1.TaskMaterializer; } });
10
+ var TaskService_1 = require("./TaskService");
11
+ Object.defineProperty(exports, "TaskService", { enumerable: true, get: function () { return TaskService_1.TaskService; } });
12
+ var TaskAuthBinding_1 = require("./TaskAuthBinding");
13
+ Object.defineProperty(exports, "TASK_AUTH_CREDENTIAL_SERVICE", { enumerable: true, get: function () { return TaskAuthBinding_1.TASK_AUTH_CREDENTIAL_SERVICE; } });
14
+ Object.defineProperty(exports, "TaskAuthBindingKind", { enumerable: true, get: function () { return TaskAuthBinding_1.TaskAuthBindingKind; } });
15
+ Object.defineProperty(exports, "TaskAuthBindingService", { enumerable: true, get: function () { return TaskAuthBinding_1.TaskAuthBindingService; } });
16
+ Object.defineProperty(exports, "TaskAuthBindingStatus", { enumerable: true, get: function () { return TaskAuthBinding_1.TaskAuthBindingStatus; } });
17
+ Object.defineProperty(exports, "encodeClientCredentialsApiKey", { enumerable: true, get: function () { return TaskAuthBinding_1.encodeClientCredentialsApiKey; } });
18
+ Object.defineProperty(exports, "parseClientCredentialsApiKey", { enumerable: true, get: function () { return TaskAuthBinding_1.parseClientCredentialsApiKey; } });
19
+ var InngestTaskScheduler_1 = require("./InngestTaskScheduler");
20
+ Object.defineProperty(exports, "InngestTaskScheduler", { enumerable: true, get: function () { return InngestTaskScheduler_1.InngestTaskScheduler; } });
21
+ Object.defineProperty(exports, "XPOD_TASK_MATERIALIZE_DUE_EVENT", { enumerable: true, get: function () { return InngestTaskScheduler_1.XPOD_TASK_MATERIALIZE_DUE_EVENT; } });
22
+ Object.defineProperty(exports, "XPOD_TASK_EVENT", { enumerable: true, get: function () { return InngestTaskScheduler_1.XPOD_TASK_EVENT; } });
23
+ Object.defineProperty(exports, "XPOD_TASK_EVENT_FUNCTION_ID", { enumerable: true, get: function () { return InngestTaskScheduler_1.XPOD_TASK_EVENT_FUNCTION_ID; } });
24
+ Object.defineProperty(exports, "XPOD_TASK_MATERIALIZE_DUE_FUNCTION_ID", { enumerable: true, get: function () { return InngestTaskScheduler_1.XPOD_TASK_MATERIALIZE_DUE_FUNCTION_ID; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/tasks/index.ts"],"names":[],"mappings":";;;AAAA,mCAOkB;AANhB,8FAAA,IAAI,OAAA;AACJ,oGAAA,UAAU,OAAA;AACV,yGAAA,eAAe,OAAA;AAUjB,uDAI4B;AAH1B,oHAAA,gBAAgB,OAAA;AAIlB,6CAKuB;AAJrB,0GAAA,WAAW,OAAA;AAKb,qDAc2B;AAbzB,+HAAA,4BAA4B,OAAA;AAC5B,sHAAA,mBAAmB,OAAA;AACnB,yHAAA,sBAAsB,OAAA;AACtB,wHAAA,qBAAqB,OAAA;AACrB,gIAAA,6BAA6B,OAAA;AAC7B,+HAAA,4BAA4B,OAAA;AAS9B,+DAWgC;AAV9B,4HAAA,oBAAoB,OAAA;AACpB,uIAAA,+BAA+B,OAAA;AAC/B,uHAAA,eAAe,OAAA;AACf,mIAAA,2BAA2B,OAAA;AAC3B,6IAAA,qCAAqC,OAAA","sourcesContent":["export {\n Task,\n TaskStatus,\n TaskTriggerKind,\n type TaskRecord,\n type TaskStatusType,\n type TaskTriggerKindType,\n} from './schema';\nexport {\n type TaskListOptions,\n type TaskRecordData,\n type TaskStore,\n} from './store';\nexport {\n TaskMaterializer,\n type MaterializedTaskRun,\n type TaskMaterializerOptions,\n} from './TaskMaterializer';\nexport {\n TaskService,\n type CreateTaskInput,\n type CreateTaskResult,\n type TaskServiceOptions,\n} from './TaskService';\nexport {\n TASK_AUTH_CREDENTIAL_SERVICE,\n TaskAuthBindingKind,\n TaskAuthBindingService,\n TaskAuthBindingStatus,\n encodeClientCredentialsApiKey,\n parseClientCredentialsApiKey,\n type CreateTaskAuthBindingInput,\n type TaskAuthBindingKindType,\n type TaskAuthBindingRepository,\n type TaskAuthBindingServiceOptions,\n type TaskAuthBindingSnapshot,\n type TaskAuthBindingStatusType,\n type TaskAuthCredentialRecord,\n} from './TaskAuthBinding';\nexport {\n InngestTaskScheduler,\n XPOD_TASK_MATERIALIZE_DUE_EVENT,\n XPOD_TASK_EVENT,\n XPOD_TASK_EVENT_FUNCTION_ID,\n XPOD_TASK_MATERIALIZE_DUE_FUNCTION_ID,\n type XpodTaskMaterializeDueEvent,\n type XpodTaskMaterializeDueEventData,\n type XpodTaskEvent,\n type XpodTaskEventData,\n type InngestTaskSchedulerOptions,\n} from './InngestTaskScheduler';\n"]}
@@ -0,0 +1,23 @@
1
+ import { TaskStatus, TaskTriggerKind, type TaskRow, type TaskStatusType, type TaskTriggerKindType } from '@undefineds.co/models';
2
+ export declare const Task: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
3
+ id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
4
+ surfaceId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
5
+ title: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
6
+ prompt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
7
+ thread: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
8
+ workspace: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, true, false>;
9
+ runner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
10
+ status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
11
+ triggerKind: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
12
+ cron: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
13
+ intervalSeconds: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
14
+ eventName: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
15
+ nextRunAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
16
+ lastRunAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
17
+ metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"object", null, false, false>;
18
+ createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
19
+ updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
20
+ }>>;
21
+ export { TaskStatus, TaskTriggerKind };
22
+ export type TaskRecord = TaskRow;
23
+ export type { TaskStatusType, TaskTriggerKindType, };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskTriggerKind = exports.TaskStatus = exports.Task = void 0;
4
+ const models_1 = require("@undefineds.co/models");
5
+ Object.defineProperty(exports, "TaskStatus", { enumerable: true, get: function () { return models_1.TaskStatus; } });
6
+ Object.defineProperty(exports, "TaskTriggerKind", { enumerable: true, get: function () { return models_1.TaskTriggerKind; } });
7
+ exports.Task = models_1.taskResource;
8
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/tasks/schema.ts"],"names":[],"mappings":";;;AAAA,kDAO+B;AAItB,2FAVP,mBAAU,OAUO;AAAE,gGATnB,wBAAe,OASmB;AAFvB,QAAA,IAAI,GAAG,qBAAY,CAAC","sourcesContent":["import {\n TaskStatus,\n TaskTriggerKind,\n taskResource,\n type TaskRow,\n type TaskStatusType,\n type TaskTriggerKindType,\n} from '@undefineds.co/models';\n\nexport const Task = taskResource;\n\nexport { TaskStatus, TaskTriggerKind };\n\nexport type TaskRecord = TaskRow;\nexport type {\n TaskStatusType,\n TaskTriggerKindType,\n};\n"]}
@@ -0,0 +1,40 @@
1
+ import type { WorkspaceUri } from '../workspace/types';
2
+ import type { TaskAuthBindingSnapshot } from './TaskAuthBinding';
3
+ import type { TaskStatusType, TaskTriggerKindType } from './schema';
4
+ export interface TaskRecordData {
5
+ /** Base-relative Solid resource id, e.g. `index.ttl#task_x`. */
6
+ id: string;
7
+ surfaceId: string;
8
+ title?: string;
9
+ prompt: string;
10
+ thread: string;
11
+ workspace: WorkspaceUri;
12
+ runner: string;
13
+ status: TaskStatusType;
14
+ triggerKind: TaskTriggerKindType;
15
+ cron?: string;
16
+ intervalSeconds?: number;
17
+ eventName?: string;
18
+ nextRunAt?: number;
19
+ lastRunAt?: number;
20
+ authBinding?: TaskAuthBindingSnapshot;
21
+ metadata?: Record<string, unknown>;
22
+ createdAt: number;
23
+ updatedAt: number;
24
+ }
25
+ export interface TaskListOptions {
26
+ status?: TaskStatusType;
27
+ triggerKind?: TaskTriggerKindType;
28
+ eventName?: string;
29
+ dueAt?: number;
30
+ limit?: number;
31
+ }
32
+ export interface TaskStore<TContext> {
33
+ saveTask(task: TaskRecordData, context: TContext): Promise<void>;
34
+ loadTask(taskId: string, context: TContext): Promise<TaskRecordData>;
35
+ listTasks(options: TaskListOptions, context: TContext): Promise<TaskRecordData[]>;
36
+ }
37
+ export declare function buildTaskResourceId(id: string): string;
38
+ export declare function generateTaskResourceId(key: string): string;
39
+ export declare function resolveTaskResourceIri(podBaseUrl: string, taskId: string): string;
40
+ export declare function resolveTaskUrn(taskId: string): string;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildTaskResourceId = buildTaskResourceId;
4
+ exports.generateTaskResourceId = generateTaskResourceId;
5
+ exports.resolveTaskResourceIri = resolveTaskResourceIri;
6
+ exports.resolveTaskUrn = resolveTaskUrn;
7
+ const models_1 = require("@undefineds.co/models");
8
+ function buildTaskResourceId(id) {
9
+ if (!/^index\.ttl#[^#/]+$/.test(id)) {
10
+ throw new Error(`Task id must be a complete Task resource id under index.ttl: ${id}`);
11
+ }
12
+ return id;
13
+ }
14
+ function generateTaskResourceId(key) {
15
+ if (/^index\.ttl#[^#/]+$/.test(key)) {
16
+ throw new Error(`Task id generator requires a local key, got resource id: ${key}`);
17
+ }
18
+ if (/\.ttl(?:#|$)/i.test(key) || key.includes('/') || key.includes('#')) {
19
+ throw new Error(`Task id generator requires a local key: ${key}`);
20
+ }
21
+ return (0, models_1.taskResourceId)(key);
22
+ }
23
+ function resolveTaskResourceIri(podBaseUrl, taskId) {
24
+ if (/^https?:\/\//.test(taskId)) {
25
+ return taskId;
26
+ }
27
+ const base = podBaseUrl.replace(/\/$/, '');
28
+ const relative = buildTaskResourceId(taskId).replace(/^\/+/, '');
29
+ return `${base}/.data/task/${relative}`;
30
+ }
31
+ function resolveTaskUrn(taskId) {
32
+ return `urn:xpod:task:${encodeURIComponent(buildTaskResourceId(taskId))}`;
33
+ }
34
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/api/tasks/store.ts"],"names":[],"mappings":";;AAyCA,kDAKC;AAED,wDAQC;AAED,wDAOC;AAED,wCAEC;AApED,kDAAuD;AAwCvD,SAAgB,mBAAmB,CAAC,EAAU;IAC5C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,gEAAgE,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,sBAAsB,CAAC,GAAW;IAChD,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,4DAA4D,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,sBAAsB,CAAC,UAAkB,EAAE,MAAc;IACvE,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjE,OAAO,GAAG,IAAI,eAAe,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,iBAAiB,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC","sourcesContent":["import type { WorkspaceUri } from '../workspace/types';\nimport { taskResourceId } from '@undefineds.co/models';\nimport type { TaskAuthBindingSnapshot } from './TaskAuthBinding';\nimport type { TaskStatusType, TaskTriggerKindType } from './schema';\n\nexport interface TaskRecordData {\n /** Base-relative Solid resource id, e.g. `index.ttl#task_x`. */\n id: string;\n surfaceId: string;\n title?: string;\n prompt: string;\n thread: string;\n workspace: WorkspaceUri;\n runner: string;\n status: TaskStatusType;\n triggerKind: TaskTriggerKindType;\n cron?: string;\n intervalSeconds?: number;\n eventName?: string;\n nextRunAt?: number;\n lastRunAt?: number;\n authBinding?: TaskAuthBindingSnapshot;\n metadata?: Record<string, unknown>;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface TaskListOptions {\n status?: TaskStatusType;\n triggerKind?: TaskTriggerKindType;\n eventName?: string;\n dueAt?: number;\n limit?: number;\n}\n\nexport interface TaskStore<TContext> {\n saveTask(task: TaskRecordData, context: TContext): Promise<void>;\n loadTask(taskId: string, context: TContext): Promise<TaskRecordData>;\n listTasks(options: TaskListOptions, context: TContext): Promise<TaskRecordData[]>;\n}\n\nexport function buildTaskResourceId(id: string): string {\n if (!/^index\\.ttl#[^#/]+$/.test(id)) {\n throw new Error(`Task id must be a complete Task resource id under index.ttl: ${id}`);\n }\n return id;\n}\n\nexport function generateTaskResourceId(key: string): string {\n if (/^index\\.ttl#[^#/]+$/.test(key)) {\n throw new Error(`Task id generator requires a local key, got resource id: ${key}`);\n }\n if (/\\.ttl(?:#|$)/i.test(key) || key.includes('/') || key.includes('#')) {\n throw new Error(`Task id generator requires a local key: ${key}`);\n }\n return taskResourceId(key);\n}\n\nexport function resolveTaskResourceIri(podBaseUrl: string, taskId: string): string {\n if (/^https?:\\/\\//.test(taskId)) {\n return taskId;\n }\n const base = podBaseUrl.replace(/\\/$/, '');\n const relative = buildTaskResourceId(taskId).replace(/^\\/+/, '');\n return `${base}/.data/task/${relative}`;\n}\n\nexport function resolveTaskUrn(taskId: string): string {\n return `urn:xpod:task:${encodeURIComponent(buildTaskResourceId(taskId))}`;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export type WorkspaceUri = string;
2
+ export declare function isWorkspaceUri(value: unknown): value is WorkspaceUri;
3
+ export declare function assertWorkspaceUri(value: unknown, label?: string): WorkspaceUri;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isWorkspaceUri = isWorkspaceUri;
4
+ exports.assertWorkspaceUri = assertWorkspaceUri;
5
+ function isWorkspaceUri(value) {
6
+ if (typeof value !== 'string' || value.length === 0) {
7
+ return false;
8
+ }
9
+ try {
10
+ const url = new URL(value);
11
+ return url.protocol === 'http:' || url.protocol === 'https:' || url.protocol === 'file:';
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ function assertWorkspaceUri(value, label = 'workspace') {
18
+ if (isWorkspaceUri(value)) {
19
+ return value;
20
+ }
21
+ throw new Error(`${label} must be an http(s):// or file:// URI`);
22
+ }
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/workspace/types.ts"],"names":[],"mappings":";;AAEA,wCAWC;AAED,gDAKC;AAlBD,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAc,EAAE,KAAK,GAAG,WAAW;IACpE,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uCAAuC,CAAC,CAAC;AACnE,CAAC","sourcesContent":["export type WorkspaceUri = string;\n\nexport function isWorkspaceUri(value: unknown): value is WorkspaceUri {\n if (typeof value !== 'string' || value.length === 0) {\n return false;\n }\n\n try {\n const url = new URL(value);\n return url.protocol === 'http:' || url.protocol === 'https:' || url.protocol === 'file:';\n } catch {\n return false;\n }\n}\n\nexport function assertWorkspaceUri(value: unknown, label = 'workspace'): WorkspaceUri {\n if (isWorkspaceUri(value)) {\n return value;\n }\n throw new Error(`${label} must be an http(s):// or file:// URI`);\n}\n"]}
@@ -3,10 +3,10 @@ interface ConfigArgs {
3
3
  url?: string;
4
4
  }
5
5
  /**
6
- * Config 子命令:配置 SecretaryAI 使用的 AI 服务。
6
+ * Config 子命令:配置 Pod 中的 AI provider。
7
7
  *
8
8
  * 写入 Pod 的两个资源,与服务端 PodChatKitStore.getAiConfig() 对齐:
9
- * /settings/ai/providers.ttl#{provider} — Provider (baseUrl, displayName)
9
+ * /settings/providers/{provider}.ttl — Provider + optional Model
10
10
  * /settings/credentials.ttl#cred-{provider} — Credential (apiKey, service=ai, status=active, provider link)
11
11
  *
12
12
  * 用法:
@@ -15,17 +15,18 @@ interface ConfigArgs {
15
15
  * xpod config show
16
16
  * xpod config reset
17
17
  */
18
- export declare const UDFS_NS = "https://undefineds.co/ns#";
18
+ export declare const AI_NS: string;
19
+ export declare const CREDENTIAL_NS: string;
19
20
  /** provider name → default baseUrl */
20
21
  export declare const PROVIDER_BASE_URLS: Record<string, string>;
21
- /** OAuth providers that require browser login */
22
- export declare const OAUTH_PROVIDERS: Set<string>;
23
22
  export declare function maskSecret(value: string): string;
24
23
  export declare function credentialId(provider: string): string;
25
24
  /**
26
- * Build SPARQL UPDATE to upsert a Provider at /settings/ai/providers.ttl#{id}
25
+ * Build SPARQL UPDATE to upsert a Provider at /settings/providers/{id}.ttl
27
26
  */
28
- export declare function buildProviderSparql(resourceUrl: string, providerId: string): string;
27
+ export declare function buildProviderSparql(resourceUrl: string, providerId: string, fields?: {
28
+ model?: string;
29
+ }): string;
29
30
  /**
30
31
  * Build SPARQL UPDATE to upsert a Credential at /settings/credentials.ttl#cred-{provider}
31
32
  */