@undefineds.co/xpod 0.2.44 → 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 (431) 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/runtime/configure-drizzle-solid.js +52 -0
  151. package/dist/runtime/configure-drizzle-solid.js.map +1 -1
  152. package/dist/storage/quint/PgQuintStore.d.ts +6 -0
  153. package/dist/storage/quint/PgQuintStore.js +83 -5
  154. package/dist/storage/quint/PgQuintStore.js.map +1 -1
  155. package/dist/storage/quint/PgQuintStore.jsonld +24 -0
  156. package/dist/storage/quint/SqliteQuintStore.d.ts +1 -0
  157. package/dist/storage/quint/SqliteQuintStore.js +52 -0
  158. package/dist/storage/quint/SqliteQuintStore.js.map +1 -1
  159. package/dist/storage/quint/SqliteQuintStore.jsonld +4 -0
  160. package/dist/storage/quint/types.d.ts +6 -0
  161. package/dist/storage/quint/types.js.map +1 -1
  162. package/dist/storage/sparql/FilterPushdownExtractor.js +23 -11
  163. package/dist/storage/sparql/FilterPushdownExtractor.js.map +1 -1
  164. package/dist/storage/vector/VectorIndexingListener.js +13 -18
  165. package/dist/storage/vector/VectorIndexingListener.js.map +1 -1
  166. package/dist/util/identifiers/ClusterIdentifierStrategy.js +29 -1
  167. package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -1
  168. package/dist/vocab/index.d.ts +2 -6
  169. package/dist/vocab/index.js +2 -6
  170. package/dist/vocab/index.js.map +1 -1
  171. package/dist/vocab/udfs.d.ts +12 -0
  172. package/dist/vocab/udfs.js +12 -0
  173. package/dist/vocab/udfs.js.map +1 -1
  174. package/node_modules/@undefineds.co/drizzle-solid/README.md +52 -24
  175. package/node_modules/@undefineds.co/drizzle-solid/README.zh-CN.md +30 -24
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/discovery/types.d.ts +6 -2
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/discovery/types.d.ts.map +1 -1
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +43 -10
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.d.ts.map +1 -1
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.js +1 -0
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.js.map +1 -1
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.d.ts +5 -0
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.d.ts.map +1 -1
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.js +44 -13
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.js.map +1 -1
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts +1 -0
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +21 -2
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/types.d.ts +1 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/types.d.ts.map +1 -1
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/core/expressions.d.ts +1 -1
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/core/expressions.d.ts.map +1 -1
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts +76 -41
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts.map +1 -1
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +443 -114
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.d.ts +28 -1
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.d.ts.map +1 -1
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.js +142 -31
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.js.map +1 -1
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.d.ts +3 -0
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.d.ts.map +1 -1
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.js +84 -6
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.js.map +1 -1
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts +3 -0
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts.map +1 -1
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js +29 -9
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js.map +1 -1
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +2 -8
  214. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  215. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +19 -51
  216. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  217. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/types.d.ts +1 -0
  218. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/types.d.ts.map +1 -1
  219. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-conditions.d.ts +2 -2
  220. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-conditions.d.ts.map +1 -1
  221. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +6 -6
  222. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  223. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts +4 -4
  224. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts.map +1 -1
  225. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js +56 -23
  226. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js.map +1 -1
  227. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.d.ts +14 -10
  228. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.d.ts.map +1 -1
  229. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.js +55 -23
  230. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.js.map +1 -1
  231. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.d.ts +3 -3
  232. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.js +6 -6
  233. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.js.map +1 -1
  234. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.d.ts +3 -3
  235. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.js +4 -4
  236. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.js.map +1 -1
  237. package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.d.ts.map +1 -1
  238. package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.js +33 -8
  239. package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.js.map +1 -1
  240. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/defs.d.ts +11 -2
  241. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/defs.d.ts.map +1 -1
  242. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.d.ts.map +1 -1
  243. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.js +3 -2
  244. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.js.map +1 -1
  245. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts +13 -8
  246. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts.map +1 -1
  247. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js +24 -22
  248. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js.map +1 -1
  249. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.d.ts +3 -0
  250. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.d.ts.map +1 -1
  251. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.js.map +1 -1
  252. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.d.ts +3 -2
  253. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.d.ts.map +1 -1
  254. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.js +28 -14
  255. package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.js.map +1 -1
  256. package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.d.ts.map +1 -1
  257. package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.js +3 -2
  258. package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.js.map +1 -1
  259. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.d.ts +9 -9
  260. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.d.ts.map +1 -1
  261. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.js +56 -22
  262. package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.js.map +1 -1
  263. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.d.ts +9 -1
  264. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.d.ts.map +1 -1
  265. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.js +2 -0
  266. package/node_modules/@undefineds.co/drizzle-solid/dist/driver.js.map +1 -1
  267. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts +6 -2
  268. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts.map +1 -1
  269. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  270. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  271. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +43 -10
  272. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  273. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.d.ts.map +1 -1
  274. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.js +1 -0
  275. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.js.map +1 -1
  276. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts +5 -0
  277. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts.map +1 -1
  278. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.js +44 -13
  279. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.js.map +1 -1
  280. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts +1 -0
  281. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  282. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +21 -2
  283. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  284. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts +1 -0
  285. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts.map +1 -1
  286. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts +1 -1
  287. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts.map +1 -1
  288. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts +76 -41
  289. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts.map +1 -1
  290. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +443 -114
  291. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  292. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts +28 -1
  293. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts.map +1 -1
  294. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.js +142 -31
  295. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.js.map +1 -1
  296. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts +3 -0
  297. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts.map +1 -1
  298. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.js +84 -6
  299. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.js.map +1 -1
  300. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts +3 -0
  301. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts.map +1 -1
  302. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js +29 -9
  303. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js.map +1 -1
  304. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +2 -8
  305. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  306. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +19 -51
  307. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  308. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts +1 -0
  309. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts.map +1 -1
  310. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts +2 -2
  311. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts.map +1 -1
  312. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +6 -6
  313. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  314. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts +4 -4
  315. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts.map +1 -1
  316. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js +56 -23
  317. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js.map +1 -1
  318. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts +14 -10
  319. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -1
  320. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.js +55 -23
  321. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.js.map +1 -1
  322. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.d.ts +3 -3
  323. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.js +6 -6
  324. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.js.map +1 -1
  325. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.d.ts +3 -3
  326. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.js +4 -4
  327. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.js.map +1 -1
  328. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -1
  329. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.js +33 -8
  330. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.js.map +1 -1
  331. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts +11 -2
  332. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts.map +1 -1
  333. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.d.ts.map +1 -1
  334. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.js +3 -2
  335. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.js.map +1 -1
  336. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts +13 -8
  337. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts.map +1 -1
  338. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js +24 -22
  339. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js.map +1 -1
  340. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts +3 -0
  341. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts.map +1 -1
  342. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.js.map +1 -1
  343. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts +3 -2
  344. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts.map +1 -1
  345. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.js +28 -14
  346. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.js.map +1 -1
  347. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.d.ts.map +1 -1
  348. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.js +3 -2
  349. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.js.map +1 -1
  350. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts +9 -9
  351. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts.map +1 -1
  352. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.js +56 -22
  353. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.js.map +1 -1
  354. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts +9 -1
  355. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts.map +1 -1
  356. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.js +2 -0
  357. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.js.map +1 -1
  358. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts +16 -2
  359. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts.map +1 -1
  360. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.js +1 -1
  361. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.js.map +1 -1
  362. package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts +16 -2
  363. package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts.map +1 -1
  364. package/node_modules/@undefineds.co/drizzle-solid/dist/utils/find-by-iri.js +1 -1
  365. package/node_modules/@undefineds.co/drizzle-solid/dist/utils/find-by-iri.js.map +1 -1
  366. package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
  367. package/package.json +5 -3
  368. package/scripts/patch-jose.js +62 -12
  369. package/dist/agents/AgentManager.d.ts +0 -116
  370. package/dist/agents/AgentManager.js +0 -290
  371. package/dist/agents/AgentManager.js.map +0 -1
  372. package/dist/agents/IndexAgent.d.ts +0 -70
  373. package/dist/agents/IndexAgent.js +0 -417
  374. package/dist/agents/IndexAgent.js.map +0 -1
  375. package/dist/agents/config/parse-agent-md.d.ts +0 -33
  376. package/dist/agents/config/parse-agent-md.js +0 -75
  377. package/dist/agents/config/parse-agent-md.js.map +0 -1
  378. package/dist/agents/schema/agent-config.d.ts +0 -2
  379. package/dist/agents/schema/agent-config.js +0 -32
  380. package/dist/agents/schema/agent-config.js.map +0 -1
  381. package/dist/agents/schema/create-agent-schema.d.ts +0 -25
  382. package/dist/agents/schema/create-agent-schema.js +0 -35
  383. package/dist/agents/schema/create-agent-schema.js.map +0 -1
  384. package/dist/api/chatkit/runtime/PtyThreadRuntime.d.ts +0 -127
  385. package/dist/api/chatkit/runtime/PtyThreadRuntime.js +0 -791
  386. package/dist/api/chatkit/runtime/PtyThreadRuntime.js.map +0 -1
  387. package/dist/cli/lib/agent-session.d.ts +0 -37
  388. package/dist/cli/lib/agent-session.js +0 -211
  389. package/dist/cli/lib/agent-session.js.map +0 -1
  390. package/dist/cli/lib/ensure-ai-credentials.d.ts +0 -13
  391. package/dist/cli/lib/ensure-ai-credentials.js +0 -40
  392. package/dist/cli/lib/ensure-ai-credentials.js.map +0 -1
  393. package/dist/cli/lib/model-manager.d.ts +0 -37
  394. package/dist/cli/lib/model-manager.js +0 -251
  395. package/dist/cli/lib/model-manager.js.map +0 -1
  396. package/dist/cli/lib/oauth-credential-manager.d.ts +0 -37
  397. package/dist/cli/lib/oauth-credential-manager.js +0 -129
  398. package/dist/cli/lib/oauth-credential-manager.js.map +0 -1
  399. package/dist/cli/lib/oauth-providers/codebuddy.d.ts +0 -25
  400. package/dist/cli/lib/oauth-providers/codebuddy.js +0 -69
  401. package/dist/cli/lib/oauth-providers/codebuddy.js.map +0 -1
  402. package/dist/cli/lib/oauth-providers/index.d.ts +0 -12
  403. package/dist/cli/lib/oauth-providers/index.js +0 -23
  404. package/dist/cli/lib/oauth-providers/index.js.map +0 -1
  405. package/dist/cli/lib/pi-optional.d.ts +0 -84
  406. package/dist/cli/lib/pi-optional.js +0 -35
  407. package/dist/cli/lib/pi-optional.js.map +0 -1
  408. package/dist/cli/lib/pod-ai-config.d.ts +0 -26
  409. package/dist/cli/lib/pod-ai-config.js +0 -99
  410. package/dist/cli/lib/pod-ai-config.js.map +0 -1
  411. package/dist/cli/lib/pod-thread-store.d.ts +0 -57
  412. package/dist/cli/lib/pod-thread-store.js +0 -312
  413. package/dist/cli/lib/pod-thread-store.js.map +0 -1
  414. package/dist/cli/lib/secretary-prompt.d.ts +0 -6
  415. package/dist/cli/lib/secretary-prompt.js +0 -85
  416. package/dist/cli/lib/secretary-prompt.js.map +0 -1
  417. package/dist/task/DrizzleTaskQueue.d.ts +0 -56
  418. package/dist/task/DrizzleTaskQueue.js +0 -171
  419. package/dist/task/DrizzleTaskQueue.js.map +0 -1
  420. package/dist/task/TaskExecutor.d.ts +0 -82
  421. package/dist/task/TaskExecutor.js +0 -198
  422. package/dist/task/TaskExecutor.js.map +0 -1
  423. package/dist/task/index.d.ts +0 -10
  424. package/dist/task/index.js +0 -20
  425. package/dist/task/index.js.map +0 -1
  426. package/dist/task/schema.d.ts +0 -53
  427. package/dist/task/schema.js +0 -71
  428. package/dist/task/schema.js.map +0 -1
  429. package/dist/task/types.d.ts +0 -186
  430. package/dist/task/types.js +0 -12
  431. package/dist/task/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VectorIndexingListener.js","sourceRoot":"","sources":["../../../src/storage/vector/VectorIndexingListener.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * VectorIndexingListener - 向量索引监听器\n *\n * 监听资源变更事件,自动触发向量索引更新。\n *\n * 工作流程:\n * 1. 收到资源变更事件\n * 2. 检查资源是否在某个 VectorStore 的 scope 内\n * 3. 如果是,读取资源内容,生成 embedding,存入向量库\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { ResourceChangeEvent, ResourceChangeListener } from '../ObservableResourceStore';\nimport type { VectorStore } from '../vector/VectorStore';\nimport type { EmbeddingService } from '../../ai/service/EmbeddingService';\nimport type { SparqlEngine } from '../sparql/SubgraphQueryEngine';\nimport type { AiCredential } from '../../ai/service/types';\nimport type { ResourceStore, RepresentationPreferences } from '@solid/community-server';\n\n/**\n * VectorStore 定义(从 RDF 读取)\n */\nexport interface VectorStoreDefinition {\n /** VectorStore URI */\n uri: string;\n /** 索引范围(Container URI) */\n scope: string;\n /** embedding 模型 */\n model: string;\n /** 状态 */\n status: 'active' | 'paused';\n /** 分块大小 */\n chunkSize?: number;\n /** 分块重叠 */\n chunkOverlap?: number;\n}\n\nexport interface VectorIndexingListenerOptions {\n /** SPARQL 引擎(用于查询 VectorStore 定义和 AI 凭据) */\n sparqlEngine: SparqlEngine;\n /** 向量存储 */\n vectorStore: VectorStore;\n /** Embedding 服务 */\n embeddingService: EmbeddingService;\n /** 资源存储(用于读取资源内容) */\n resourceStore: ResourceStore;\n /** 默认 embedding 模型 */\n defaultModel?: string;\n /** 支持的文件扩展名 */\n supportedExtensions?: string[];\n}\n\n/**\n * VectorIndexingListener - 自动向量索引\n */\nexport class VectorIndexingListener implements ResourceChangeListener {\n protected readonly logger = getLoggerFor(this);\n\n private readonly sparqlEngine: SparqlEngine;\n private readonly vectorStore: VectorStore;\n private readonly embeddingService: EmbeddingService;\n private readonly resourceStore: ResourceStore;\n private readonly defaultModel: string;\n private readonly supportedExtensions: Set<string>;\n\n // 缓存 VectorStore 定义,避免频繁查询\n private vectorStoreCache = new Map<string, VectorStoreDefinition[]>();\n private cacheExpiry = 0;\n private readonly cacheTtlMs = 60000; // 1 分钟缓存\n\n public constructor(options: VectorIndexingListenerOptions) {\n this.sparqlEngine = options.sparqlEngine;\n this.vectorStore = options.vectorStore;\n this.embeddingService = options.embeddingService;\n this.resourceStore = options.resourceStore;\n this.defaultModel = options.defaultModel ?? 'text-embedding-004';\n this.supportedExtensions = new Set(\n options.supportedExtensions ?? ['.txt', '.md', '.html', '.json', '.ttl', '.jsonld'],\n );\n }\n\n /**\n * 处理资源变更事件\n */\n public async onResourceChanged(event: ResourceChangeEvent): Promise<void> {\n const { path, action, isContainer } = event;\n\n // 跳过容器变更\n if (isContainer) {\n this.logger.debug(`Skipping container: ${path}`);\n return;\n }\n\n // 检查文件扩展名\n if (!this.isSupportedFile(path)) {\n this.logger.debug(`Skipping unsupported file type: ${path}`);\n return;\n }\n\n // 获取 Pod base URL\n const podBaseUrl = this.getPodBaseUrl(path);\n if (!podBaseUrl) {\n this.logger.debug(`Cannot determine pod base URL for: ${path}`);\n return;\n }\n\n // 如果是 VectorStore 配置文件或 Credential 配置文件更新,清除缓存\n if (path.includes('vector-stores') || path.includes('credentials')) {\n this.logger.debug(`Configuration file updated, clearing cache for ${podBaseUrl}`);\n this.vectorStoreCache.delete(podBaseUrl);\n // 配置文件本身不需要索引,直接返回\n return;\n }\n\n try {\n // 查找覆盖此路径的 VectorStore\n const vectorStores = await this.findVectorStoresForPath(path, podBaseUrl);\n if (vectorStores.length === 0) {\n this.logger.debug(`No VectorStore configured for: ${path}`);\n return;\n }\n\n this.logger.info(`Processing ${action} for ${path}, matched ${vectorStores.length} VectorStore(s)`);\n\n // 根据 action 执行索引操作\n if (action === 'delete') {\n await this.handleDelete(path, vectorStores);\n } else {\n await this.handleCreateOrUpdate(path, podBaseUrl, vectorStores);\n }\n } catch (error) {\n this.logger.error(`Failed to process ${action} for ${path}: ${error}`);\n }\n }\n\n /**\n * 处理删除操作\n */\n private async handleDelete(path: string, vectorStores: VectorStoreDefinition[]): Promise<void> {\n const vectorId = this.pathToVectorId(path);\n\n for (const vs of vectorStores) {\n try {\n await this.vectorStore.deleteVector(vs.model, vectorId);\n this.logger.info(`Deleted vector for ${path} from model ${vs.model}`);\n } catch (error) {\n this.logger.error(`Failed to delete vector for ${path}: ${error}`);\n }\n }\n }\n\n /**\n * 处理创建或更新操作\n */\n private async handleCreateOrUpdate(\n path: string,\n podBaseUrl: string,\n vectorStores: VectorStoreDefinition[],\n ): Promise<void> {\n // 读取资源内容\n const content = await this.getResourceContent(path);\n if (!content || content.trim().length === 0) {\n this.logger.debug(`Empty content for ${path}, skipping`);\n return;\n }\n\n // 获取 AI 凭据\n const credential = await this.getAiCredential(podBaseUrl);\n if (!credential) {\n this.logger.warn(`No AI credential found for ${podBaseUrl}, skipping indexing`);\n return;\n }\n\n // 为每个 VectorStore 生成 embedding 并存储\n // 注意:如果多个 VectorStore 使用相同的 model,只需要生成一次 embedding\n const modelEmbeddings = new Map<string, number[]>();\n\n for (const vs of vectorStores) {\n if (vs.status !== 'active') {\n this.logger.debug(`VectorStore ${vs.uri} is ${vs.status}, skipping`);\n continue;\n }\n\n const model = vs.model || this.defaultModel;\n\n try {\n // 检查是否已经生成过这个 model 的 embedding\n let embedding = modelEmbeddings.get(model);\n if (!embedding) {\n embedding = await this.embeddingService.embed(content, credential, model);\n modelEmbeddings.set(model, embedding);\n }\n\n // 确保向量表存在\n await this.vectorStore.ensureVectorTable(model);\n\n // 存储向量\n const vectorId = this.pathToVectorId(path);\n await this.vectorStore.upsertVector(model, vectorId, embedding);\n\n this.logger.info(`Indexed ${path} to model ${model}, vectorId=${vectorId}`);\n } catch (error) {\n this.logger.error(`Failed to index ${path} to model ${model}: ${error}`);\n }\n }\n }\n\n /**\n * 查找覆盖指定路径的 VectorStore\n */\n private async findVectorStoresForPath(\n path: string,\n podBaseUrl: string,\n ): Promise<VectorStoreDefinition[]> {\n const allStores = await this.getVectorStoreDefinitions(podBaseUrl);\n\n return allStores.filter((vs) => {\n // 检查 path 是否在 scope 内\n const scope = vs.scope.endsWith('/') ? vs.scope : `${vs.scope}/`;\n return path.startsWith(scope);\n });\n }\n\n /**\n * 获取 Pod 的所有 VectorStore 定义\n */\n private async getVectorStoreDefinitions(podBaseUrl: string): Promise<VectorStoreDefinition[]> {\n // 检查缓存\n if (Date.now() < this.cacheExpiry && this.vectorStoreCache.has(podBaseUrl)) {\n return this.vectorStoreCache.get(podBaseUrl)!;\n }\n\n try {\n // 使用 undefineds.co/ns# 命名空间,与 drizzle-solid schema 一致\n const query = `\n PREFIX udfs: <https://undefineds.co/ns#>\n SELECT ?vs ?scope ?model ?status ?chunkSize ?chunkOverlap WHERE {\n ?vs a udfs:VectorStore ;\n udfs:container ?scope .\n OPTIONAL { ?vs udfs:chunkingStrategy ?model }\n OPTIONAL { ?vs udfs:status ?status }\n OPTIONAL { ?vs udfs:chunkSize ?chunkSize }\n OPTIONAL { ?vs udfs:chunkOverlap ?chunkOverlap }\n }\n `;\n\n const bindingsStream = await this.sparqlEngine.queryBindings(query, podBaseUrl);\n const definitions: VectorStoreDefinition[] = [];\n\n for await (const binding of bindingsStream) {\n const vs = binding.get('vs');\n const scope = binding.get('scope');\n const model = binding.get('model');\n const status = binding.get('status');\n const chunkSize = binding.get('chunkSize');\n const chunkOverlap = binding.get('chunkOverlap');\n\n if (vs && scope) {\n definitions.push({\n uri: vs.value,\n scope: this.resolveUri(scope.value, podBaseUrl),\n model: model?.value || this.defaultModel,\n status: (status?.value as 'active' | 'paused') || 'active',\n chunkSize: chunkSize ? parseInt(chunkSize.value, 10) : undefined,\n chunkOverlap: chunkOverlap ? parseInt(chunkOverlap.value, 10) : undefined,\n });\n }\n }\n\n // 更新缓存\n this.vectorStoreCache.set(podBaseUrl, definitions);\n this.cacheExpiry = Date.now() + this.cacheTtlMs;\n\n this.logger.debug(`Found ${definitions.length} VectorStore(s) for ${podBaseUrl}`);\n return definitions;\n } catch (error) {\n this.logger.error(`Failed to query VectorStore definitions: ${error}`);\n return [];\n }\n }\n\n /**\n * 获取 AI 凭据\n */\n private async getAiCredential(podBaseUrl: string): Promise<AiCredential | null> {\n try {\n // 使用 undefineds.co/ns# 命名空间,与 drizzle-solid schema 一致\n // Credential -> Provider 关联,从 Provider 获取 baseUrl 和 proxyUrl\n const query = `\n PREFIX udfs: <https://undefineds.co/ns#>\n SELECT ?apiKey ?baseUrl ?providerUri ?proxyUrl WHERE {\n ?cred a udfs:Credential ;\n udfs:service \"ai\" ;\n udfs:status \"active\" ;\n udfs:apiKey ?apiKey .\n OPTIONAL { ?cred udfs:provider ?providerUri }\n OPTIONAL { \n ?cred udfs:provider ?providerUri .\n ?providerUri udfs:baseUrl ?baseUrl .\n }\n OPTIONAL { \n ?cred udfs:provider ?providerUri .\n ?providerUri udfs:proxyUrl ?proxyUrl .\n }\n } LIMIT 1\n `;\n\n const bindingsStream = await this.sparqlEngine.queryBindings(query, podBaseUrl);\n\n for await (const binding of bindingsStream) {\n const apiKey = binding.get('apiKey');\n const baseUrl = binding.get('baseUrl');\n const providerUri = binding.get('providerUri');\n const proxyUrl = binding.get('proxyUrl');\n\n if (apiKey) {\n // 从 provider URI 提取 provider 名称(如 #google -> google)\n let providerName = 'google';\n if (providerUri?.value) {\n const match = providerUri.value.match(/#([^#]+)$/);\n if (match) providerName = match[1];\n }\n \n return {\n apiKey: apiKey.value,\n baseUrl: baseUrl?.value,\n provider: providerName,\n proxyUrl: proxyUrl?.value,\n };\n }\n }\n\n return null;\n } catch (error) {\n this.logger.error(`Failed to query AI credential: ${error}`);\n return null;\n }\n }\n\n /**\n * 读取资源内容\n */\n private async getResourceContent(path: string): Promise<string | null> {\n try {\n const preferences: RepresentationPreferences = {\n type: { 'text/plain': 1, 'text/markdown': 0.9, 'text/turtle': 0.8, '*/*': 0.1 },\n };\n\n const representation = await this.resourceStore.getRepresentation({ path }, preferences);\n const chunks: Buffer[] = [];\n\n for await (const chunk of representation.data) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n\n return Buffer.concat(chunks).toString('utf-8');\n } catch (error) {\n this.logger.error(`Failed to read resource ${path}: ${error}`);\n return null;\n }\n }\n\n /**\n * 检查是否为支持的文件类型\n */\n private isSupportedFile(path: string): boolean {\n const ext = this.getExtension(path);\n return this.supportedExtensions.has(ext);\n }\n\n /**\n * 获取文件扩展名\n */\n private getExtension(path: string): string {\n const lastDot = path.lastIndexOf('.');\n if (lastDot === -1) return '';\n return path.slice(lastDot).toLowerCase();\n }\n\n /**\n * 从路径提取 Pod base URL\n */\n private getPodBaseUrl(path: string): string | null {\n // 假设路径格式为 /username/... 或 https://pod.example.com/username/...\n try {\n const url = new URL(path, 'http://localhost');\n const parts = url.pathname.split('/').filter(Boolean);\n if (parts.length > 0) {\n return `${url.origin}/${parts[0]}/`;\n }\n } catch {\n // 相对路径\n const parts = path.split('/').filter(Boolean);\n if (parts.length > 0) {\n return `/${parts[0]}/`;\n }\n }\n return null;\n }\n\n /**\n * 解析相对 URI\n */\n private resolveUri(uri: string, baseUrl: string): string {\n if (uri.startsWith('http://') || uri.startsWith('https://')) {\n return uri;\n }\n if (uri.startsWith('/')) {\n try {\n const base = new URL(baseUrl);\n return `${base.origin}${uri}`;\n } catch {\n return uri;\n }\n }\n return `${baseUrl}${uri}`;\n }\n\n /**\n * 将路径转换为向量 ID(使用 hash)\n */\n private pathToVectorId(path: string): number {\n let hash = 2166136261; // FNV offset basis\n for (let i = 0; i < path.length; i++) {\n hash ^= path.charCodeAt(i);\n hash = Math.imul(hash, 16777619); // FNV prime\n }\n return Math.abs(hash);\n }\n\n /**\n * 清除缓存\n */\n public clearCache(): void {\n this.vectorStoreCache.clear();\n this.cacheExpiry = 0;\n }\n}\n"]}
1
+ {"version":3,"file":"VectorIndexingListener.js","sourceRoot":"","sources":["../../../src/storage/vector/VectorIndexingListener.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * VectorIndexingListener - 向量索引监听器\n *\n * 监听资源变更事件,自动触发向量索引更新。\n *\n * 工作流程:\n * 1. 收到资源变更事件\n * 2. 检查资源是否在某个 VectorStore 的 scope 内\n * 3. 如果是,读取资源内容,生成 embedding,存入向量库\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { ResourceChangeEvent, ResourceChangeListener } from '../ObservableResourceStore';\nimport type { VectorStore } from '../vector/VectorStore';\nimport type { EmbeddingService } from '../../ai/service/EmbeddingService';\nimport type { SparqlEngine } from '../sparql/SubgraphQueryEngine';\nimport type { AiCredential } from '../../ai/service/types';\nimport type { ResourceStore, RepresentationPreferences } from '@solid/community-server';\nimport { XPOD_AI, XPOD_CREDENTIAL, normalizeAIConfigProviderId } from '@undefineds.co/models';\n\n/**\n * VectorStore 定义(从 RDF 读取)\n */\nexport interface VectorStoreDefinition {\n /** VectorStore URI */\n uri: string;\n /** 索引范围(Container URI) */\n scope: string;\n /** embedding 模型 */\n model: string;\n /** 状态 */\n status: 'active' | 'paused';\n /** 分块大小 */\n chunkSize?: number;\n /** 分块重叠 */\n chunkOverlap?: number;\n}\n\nexport interface VectorIndexingListenerOptions {\n /** SPARQL 引擎(用于查询 VectorStore 定义和 AI 凭据) */\n sparqlEngine: SparqlEngine;\n /** 向量存储 */\n vectorStore: VectorStore;\n /** Embedding 服务 */\n embeddingService: EmbeddingService;\n /** 资源存储(用于读取资源内容) */\n resourceStore: ResourceStore;\n /** 默认 embedding 模型 */\n defaultModel?: string;\n /** 支持的文件扩展名 */\n supportedExtensions?: string[];\n}\n\n/**\n * VectorIndexingListener - 自动向量索引\n */\nexport class VectorIndexingListener implements ResourceChangeListener {\n protected readonly logger = getLoggerFor(this);\n\n private readonly sparqlEngine: SparqlEngine;\n private readonly vectorStore: VectorStore;\n private readonly embeddingService: EmbeddingService;\n private readonly resourceStore: ResourceStore;\n private readonly defaultModel: string;\n private readonly supportedExtensions: Set<string>;\n\n // 缓存 VectorStore 定义,避免频繁查询\n private vectorStoreCache = new Map<string, VectorStoreDefinition[]>();\n private cacheExpiry = 0;\n private readonly cacheTtlMs = 60000; // 1 分钟缓存\n\n public constructor(options: VectorIndexingListenerOptions) {\n this.sparqlEngine = options.sparqlEngine;\n this.vectorStore = options.vectorStore;\n this.embeddingService = options.embeddingService;\n this.resourceStore = options.resourceStore;\n this.defaultModel = options.defaultModel ?? 'text-embedding-004';\n this.supportedExtensions = new Set(\n options.supportedExtensions ?? ['.txt', '.md', '.html', '.json', '.ttl', '.jsonld'],\n );\n }\n\n /**\n * 处理资源变更事件\n */\n public async onResourceChanged(event: ResourceChangeEvent): Promise<void> {\n const { path, action, isContainer } = event;\n\n // 跳过容器变更\n if (isContainer) {\n this.logger.debug(`Skipping container: ${path}`);\n return;\n }\n\n // 检查文件扩展名\n if (!this.isSupportedFile(path)) {\n this.logger.debug(`Skipping unsupported file type: ${path}`);\n return;\n }\n\n // 获取 Pod base URL\n const podBaseUrl = this.getPodBaseUrl(path);\n if (!podBaseUrl) {\n this.logger.debug(`Cannot determine pod base URL for: ${path}`);\n return;\n }\n\n // 如果是 VectorStore 配置文件或 Credential 配置文件更新,清除缓存\n if (path.includes('vector-stores') || path.includes('credentials')) {\n this.logger.debug(`Configuration file updated, clearing cache for ${podBaseUrl}`);\n this.vectorStoreCache.delete(podBaseUrl);\n // 配置文件本身不需要索引,直接返回\n return;\n }\n\n try {\n // 查找覆盖此路径的 VectorStore\n const vectorStores = await this.findVectorStoresForPath(path, podBaseUrl);\n if (vectorStores.length === 0) {\n this.logger.debug(`No VectorStore configured for: ${path}`);\n return;\n }\n\n this.logger.info(`Processing ${action} for ${path}, matched ${vectorStores.length} VectorStore(s)`);\n\n // 根据 action 执行索引操作\n if (action === 'delete') {\n await this.handleDelete(path, vectorStores);\n } else {\n await this.handleCreateOrUpdate(path, podBaseUrl, vectorStores);\n }\n } catch (error) {\n this.logger.error(`Failed to process ${action} for ${path}: ${error}`);\n }\n }\n\n /**\n * 处理删除操作\n */\n private async handleDelete(path: string, vectorStores: VectorStoreDefinition[]): Promise<void> {\n const vectorId = this.pathToVectorId(path);\n\n for (const vs of vectorStores) {\n try {\n await this.vectorStore.deleteVector(vs.model, vectorId);\n this.logger.info(`Deleted vector for ${path} from model ${vs.model}`);\n } catch (error) {\n this.logger.error(`Failed to delete vector for ${path}: ${error}`);\n }\n }\n }\n\n /**\n * 处理创建或更新操作\n */\n private async handleCreateOrUpdate(\n path: string,\n podBaseUrl: string,\n vectorStores: VectorStoreDefinition[],\n ): Promise<void> {\n // 读取资源内容\n const content = await this.getResourceContent(path);\n if (!content || content.trim().length === 0) {\n this.logger.debug(`Empty content for ${path}, skipping`);\n return;\n }\n\n // 获取 AI 凭据\n const credential = await this.getAiCredential(podBaseUrl);\n if (!credential) {\n this.logger.warn(`No AI credential found for ${podBaseUrl}, skipping indexing`);\n return;\n }\n\n // 为每个 VectorStore 生成 embedding 并存储\n // 注意:如果多个 VectorStore 使用相同的 model,只需要生成一次 embedding\n const modelEmbeddings = new Map<string, number[]>();\n\n for (const vs of vectorStores) {\n if (vs.status !== 'active') {\n this.logger.debug(`VectorStore ${vs.uri} is ${vs.status}, skipping`);\n continue;\n }\n\n const model = vs.model || this.defaultModel;\n\n try {\n // 检查是否已经生成过这个 model 的 embedding\n let embedding = modelEmbeddings.get(model);\n if (!embedding) {\n embedding = await this.embeddingService.embed(content, credential, model);\n modelEmbeddings.set(model, embedding);\n }\n\n // 确保向量表存在\n await this.vectorStore.ensureVectorTable(model);\n\n // 存储向量\n const vectorId = this.pathToVectorId(path);\n await this.vectorStore.upsertVector(model, vectorId, embedding);\n\n this.logger.info(`Indexed ${path} to model ${model}, vectorId=${vectorId}`);\n } catch (error) {\n this.logger.error(`Failed to index ${path} to model ${model}: ${error}`);\n }\n }\n }\n\n /**\n * 查找覆盖指定路径的 VectorStore\n */\n private async findVectorStoresForPath(\n path: string,\n podBaseUrl: string,\n ): Promise<VectorStoreDefinition[]> {\n const allStores = await this.getVectorStoreDefinitions(podBaseUrl);\n\n return allStores.filter((vs) => {\n // 检查 path 是否在 scope 内\n const scope = vs.scope.endsWith('/') ? vs.scope : `${vs.scope}/`;\n return path.startsWith(scope);\n });\n }\n\n /**\n * 获取 Pod 的所有 VectorStore 定义\n */\n private async getVectorStoreDefinitions(podBaseUrl: string): Promise<VectorStoreDefinition[]> {\n // 检查缓存\n if (Date.now() < this.cacheExpiry && this.vectorStoreCache.has(podBaseUrl)) {\n return this.vectorStoreCache.get(podBaseUrl)!;\n }\n\n try {\n // 使用 undefineds.co/ns# 命名空间,与 drizzle-solid schema 一致\n const query = `\n PREFIX udfs: <https://undefineds.co/ns#>\n SELECT ?vs ?scope ?model ?status ?chunkSize ?chunkOverlap WHERE {\n ?vs a udfs:VectorStore ;\n udfs:container ?scope .\n OPTIONAL { ?vs udfs:chunkingStrategy ?model }\n OPTIONAL { ?vs udfs:status ?status }\n OPTIONAL { ?vs udfs:chunkSize ?chunkSize }\n OPTIONAL { ?vs udfs:chunkOverlap ?chunkOverlap }\n }\n `;\n\n const bindingsStream = await this.sparqlEngine.queryBindings(query, podBaseUrl);\n const definitions: VectorStoreDefinition[] = [];\n\n for await (const binding of bindingsStream) {\n const vs = binding.get('vs');\n const scope = binding.get('scope');\n const model = binding.get('model');\n const status = binding.get('status');\n const chunkSize = binding.get('chunkSize');\n const chunkOverlap = binding.get('chunkOverlap');\n\n if (vs && scope) {\n definitions.push({\n uri: vs.value,\n scope: this.resolveUri(scope.value, podBaseUrl),\n model: model?.value || this.defaultModel,\n status: (status?.value as 'active' | 'paused') || 'active',\n chunkSize: chunkSize ? parseInt(chunkSize.value, 10) : undefined,\n chunkOverlap: chunkOverlap ? parseInt(chunkOverlap.value, 10) : undefined,\n });\n }\n }\n\n // 更新缓存\n this.vectorStoreCache.set(podBaseUrl, definitions);\n this.cacheExpiry = Date.now() + this.cacheTtlMs;\n\n this.logger.debug(`Found ${definitions.length} VectorStore(s) for ${podBaseUrl}`);\n return definitions;\n } catch (error) {\n this.logger.error(`Failed to query VectorStore definitions: ${error}`);\n return [];\n }\n }\n\n /**\n * 获取 AI 凭据\n */\n private async getAiCredential(podBaseUrl: string): Promise<AiCredential | null> {\n try {\n // Credential -> Provider 关联,从 Provider 获取 baseUrl 和 proxyUrl\n const query = `\n PREFIX cred: <${XPOD_CREDENTIAL.NAMESPACE}>\n PREFIX ai: <${XPOD_AI.NAMESPACE}>\n SELECT ?apiKey ?baseUrl ?providerUri ?proxyUrl WHERE {\n ?cred a cred:Credential ;\n cred:service \"ai\" ;\n cred:status \"active\" ;\n cred:apiKey ?apiKey .\n OPTIONAL { ?cred cred:provider ?providerUri }\n OPTIONAL { \n ?cred cred:provider ?providerUri .\n ?providerUri ai:baseUrl ?baseUrl .\n }\n OPTIONAL { \n ?cred cred:provider ?providerUri .\n ?providerUri ai:proxyUrl ?proxyUrl .\n }\n } LIMIT 1\n `;\n\n const bindingsStream = await this.sparqlEngine.queryBindings(query, podBaseUrl);\n\n for await (const binding of bindingsStream) {\n const apiKey = binding.get('apiKey');\n const baseUrl = binding.get('baseUrl');\n const providerUri = binding.get('providerUri');\n const proxyUrl = binding.get('proxyUrl');\n\n if (apiKey) {\n const providerName = normalizeAIConfigProviderId(providerUri?.value || 'google') || 'google';\n \n return {\n apiKey: apiKey.value,\n baseUrl: baseUrl?.value,\n provider: providerName,\n proxyUrl: proxyUrl?.value,\n };\n }\n }\n\n return null;\n } catch (error) {\n this.logger.error(`Failed to query AI credential: ${error}`);\n return null;\n }\n }\n\n /**\n * 读取资源内容\n */\n private async getResourceContent(path: string): Promise<string | null> {\n try {\n const preferences: RepresentationPreferences = {\n type: { 'text/plain': 1, 'text/markdown': 0.9, 'text/turtle': 0.8, '*/*': 0.1 },\n };\n\n const representation = await this.resourceStore.getRepresentation({ path }, preferences);\n const chunks: Buffer[] = [];\n\n for await (const chunk of representation.data) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n\n return Buffer.concat(chunks).toString('utf-8');\n } catch (error) {\n this.logger.error(`Failed to read resource ${path}: ${error}`);\n return null;\n }\n }\n\n /**\n * 检查是否为支持的文件类型\n */\n private isSupportedFile(path: string): boolean {\n const ext = this.getExtension(path);\n return this.supportedExtensions.has(ext);\n }\n\n /**\n * 获取文件扩展名\n */\n private getExtension(path: string): string {\n const lastDot = path.lastIndexOf('.');\n if (lastDot === -1) return '';\n return path.slice(lastDot).toLowerCase();\n }\n\n /**\n * 从路径提取 Pod base URL\n */\n private getPodBaseUrl(path: string): string | null {\n // 假设路径格式为 /username/... 或 https://pod.example.com/username/...\n try {\n const url = new URL(path, 'http://localhost');\n const parts = url.pathname.split('/').filter(Boolean);\n if (parts.length > 0) {\n return `${url.origin}/${parts[0]}/`;\n }\n } catch {\n // 相对路径\n const parts = path.split('/').filter(Boolean);\n if (parts.length > 0) {\n return `/${parts[0]}/`;\n }\n }\n return null;\n }\n\n /**\n * 解析相对 URI\n */\n private resolveUri(uri: string, baseUrl: string): string {\n if (uri.startsWith('http://') || uri.startsWith('https://')) {\n return uri;\n }\n if (uri.startsWith('/')) {\n try {\n const base = new URL(baseUrl);\n return `${base.origin}${uri}`;\n } catch {\n return uri;\n }\n }\n return `${baseUrl}${uri}`;\n }\n\n /**\n * 将路径转换为向量 ID(使用 hash)\n */\n private pathToVectorId(path: string): number {\n let hash = 2166136261; // FNV offset basis\n for (let i = 0; i < path.length; i++) {\n hash ^= path.charCodeAt(i);\n hash = Math.imul(hash, 16777619); // FNV prime\n }\n return Math.abs(hash);\n }\n\n /**\n * 清除缓存\n */\n public clearCache(): void {\n this.vectorStoreCache.clear();\n this.cacheExpiry = 0;\n }\n}\n"]}
@@ -5,6 +5,21 @@ const node_url_1 = require("node:url");
5
5
  const global_logger_factory_1 = require("global-logger-factory");
6
6
  const community_server_1 = require("@solid/community-server");
7
7
  const PathUtil_1 = require("@solid/community-server/dist/util/PathUtil");
8
+ const SERVER_ROOT_SEGMENTS = new Set([
9
+ '.account',
10
+ '.oidc',
11
+ '.well-known',
12
+ 'admin',
13
+ 'api',
14
+ 'app',
15
+ 'auth',
16
+ 'dashboard',
17
+ 'login',
18
+ 'logout',
19
+ 'provision',
20
+ 'register',
21
+ 'settings',
22
+ ]);
8
23
  /**
9
24
  * Identifier strategy that accepts both the primary cluster host and any
10
25
  * node subdomain under the same base domain.
@@ -60,7 +75,20 @@ class ClusterIdentifierStrategy extends community_server_1.BaseIdentifierStrateg
60
75
  try {
61
76
  const target = new node_url_1.URL(identifier.path);
62
77
  if (target.hostname.toLowerCase() === this.baseHost) {
63
- return (0, PathUtil_1.ensureTrailingSlash)(target.href) === this.baseUrl;
78
+ if ((0, PathUtil_1.ensureTrailingSlash)(target.href) === this.baseUrl) {
79
+ return true;
80
+ }
81
+ const basePath = new node_url_1.URL(this.baseUrl).pathname;
82
+ if (!target.pathname.endsWith('/')) {
83
+ return false;
84
+ }
85
+ const pathname = (0, PathUtil_1.ensureTrailingSlash)(target.pathname);
86
+ if (!pathname.startsWith(basePath)) {
87
+ return false;
88
+ }
89
+ const relative = pathname.slice(basePath.length).replace(/^\/+/, '');
90
+ const segments = relative.split('/').filter(Boolean);
91
+ return segments.length === 1 && !SERVER_ROOT_SEGMENTS.has(segments[0].toLowerCase());
64
92
  }
65
93
  return target.pathname === '/' || target.pathname === '';
66
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterIdentifierStrategy.js","sourceRoot":"","sources":["../../../src/util/identifiers/ClusterIdentifierStrategy.ts"],"names":[],"mappings":"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","sourcesContent":["import { URL } from 'node:url';\nimport { getLoggerFor } from 'global-logger-factory';\nimport { BaseIdentifierStrategy } from '@solid/community-server';\nimport type { ResourceIdentifier } from '@solid/community-server';\nimport { ensureTrailingSlash } from '@solid/community-server/dist/util/PathUtil';\n\nexport interface ClusterIdentifierStrategyOptions {\n baseUrl: string;\n /**\n * 允许的额外 host 列表(用于 Docker/容器环境)\n * 可以是数组或逗号分隔的字符串,例如: ['cloud', 'idp'] 或 \"cloud,idp,localhost\"\n */\n allowedHosts?: string[] | string;\n}\n\n/**\n * Identifier strategy that accepts both the primary cluster host and any\n * node subdomain under the same base domain.\n */\nexport class ClusterIdentifierStrategy extends BaseIdentifierStrategy {\n private readonly logger = getLoggerFor(this);\n private readonly baseUrl: string;\n private readonly baseHost: string;\n private readonly allowedHosts: string[];\n\n public constructor(options: ClusterIdentifierStrategyOptions) {\n super();\n if (!options.baseUrl) {\n throw new Error('ClusterIdentifierStrategy requires a baseUrl.');\n }\n const parsed = new URL(options.baseUrl);\n this.baseHost = parsed.hostname.toLowerCase();\n this.baseUrl = ensureTrailingSlash(parsed.href);\n // 处理 allowedHosts:可以是数组或逗号分隔的字符串\n const hostsInput = options.allowedHosts ?? [];\n const hostsArray = Array.isArray(hostsInput)\n ? hostsInput\n : typeof hostsInput === 'string' && hostsInput.length > 0\n ? hostsInput.split(',').map(h => h.trim())\n : [];\n this.allowedHosts = hostsArray.map(h => h.toLowerCase());\n this.logger.info(`ClusterIdentifierStrategy initialized: baseUrl=${this.baseUrl}, baseHost=${this.baseHost}, allowedHosts=[${this.allowedHosts.join(', ')}]`);\n }\n\n public override supportsIdentifier(identifier: ResourceIdentifier): boolean {\n try {\n const target = new URL(identifier.path);\n const host = target.hostname.toLowerCase();\n\n // 检查是否在允许的 hosts 列表中\n if (this.allowedHosts.includes(host)) {\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (allowedHosts match: ${host})`);\n return true;\n }\n\n const hostMatches = host === this.baseHost || host.endsWith(`.${this.baseHost}`);\n\n if (!hostMatches) {\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> false (host mismatch: ${host} vs ${this.baseHost})`);\n return false;\n }\n\n if (host === this.baseHost) {\n const supported = identifier.path.startsWith(this.baseUrl);\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> ${supported} (baseUrl check)`);\n return supported;\n }\n\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (subdomain match)`);\n return true;\n } catch (error: unknown) {\n this.logger.warn(`Failed to parse identifier ${identifier.path}: ${(error as Error).message}`);\n return false;\n }\n }\n\n public override isRootContainer(identifier: ResourceIdentifier): boolean {\n try {\n const target = new URL(identifier.path);\n if (target.hostname.toLowerCase() === this.baseHost) {\n return ensureTrailingSlash(target.href) === this.baseUrl;\n }\n return target.pathname === '/' || target.pathname === '';\n } catch {\n return false;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ClusterIdentifierStrategy.js","sourceRoot":"","sources":["../../../src/util/identifiers/ClusterIdentifierStrategy.ts"],"names":[],"mappings":"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","sourcesContent":["import { URL } from 'node:url';\nimport { getLoggerFor } from 'global-logger-factory';\nimport { BaseIdentifierStrategy } from '@solid/community-server';\nimport type { ResourceIdentifier } from '@solid/community-server';\nimport { ensureTrailingSlash } from '@solid/community-server/dist/util/PathUtil';\n\nexport interface ClusterIdentifierStrategyOptions {\n baseUrl: string;\n /**\n * 允许的额外 host 列表(用于 Docker/容器环境)\n * 可以是数组或逗号分隔的字符串,例如: ['cloud', 'idp'] 或 \"cloud,idp,localhost\"\n */\n allowedHosts?: string[] | string;\n}\n\nconst SERVER_ROOT_SEGMENTS = new Set([\n '.account',\n '.oidc',\n '.well-known',\n 'admin',\n 'api',\n 'app',\n 'auth',\n 'dashboard',\n 'login',\n 'logout',\n 'provision',\n 'register',\n 'settings',\n]);\n\n/**\n * Identifier strategy that accepts both the primary cluster host and any\n * node subdomain under the same base domain.\n */\nexport class ClusterIdentifierStrategy extends BaseIdentifierStrategy {\n private readonly logger = getLoggerFor(this);\n private readonly baseUrl: string;\n private readonly baseHost: string;\n private readonly allowedHosts: string[];\n\n public constructor(options: ClusterIdentifierStrategyOptions) {\n super();\n if (!options.baseUrl) {\n throw new Error('ClusterIdentifierStrategy requires a baseUrl.');\n }\n const parsed = new URL(options.baseUrl);\n this.baseHost = parsed.hostname.toLowerCase();\n this.baseUrl = ensureTrailingSlash(parsed.href);\n // 处理 allowedHosts:可以是数组或逗号分隔的字符串\n const hostsInput = options.allowedHosts ?? [];\n const hostsArray = Array.isArray(hostsInput)\n ? hostsInput\n : typeof hostsInput === 'string' && hostsInput.length > 0\n ? hostsInput.split(',').map(h => h.trim())\n : [];\n this.allowedHosts = hostsArray.map(h => h.toLowerCase());\n this.logger.info(`ClusterIdentifierStrategy initialized: baseUrl=${this.baseUrl}, baseHost=${this.baseHost}, allowedHosts=[${this.allowedHosts.join(', ')}]`);\n }\n\n public override supportsIdentifier(identifier: ResourceIdentifier): boolean {\n try {\n const target = new URL(identifier.path);\n const host = target.hostname.toLowerCase();\n\n // 检查是否在允许的 hosts 列表中\n if (this.allowedHosts.includes(host)) {\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (allowedHosts match: ${host})`);\n return true;\n }\n\n const hostMatches = host === this.baseHost || host.endsWith(`.${this.baseHost}`);\n\n if (!hostMatches) {\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> false (host mismatch: ${host} vs ${this.baseHost})`);\n return false;\n }\n\n if (host === this.baseHost) {\n const supported = identifier.path.startsWith(this.baseUrl);\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> ${supported} (baseUrl check)`);\n return supported;\n }\n\n this.logger.debug(`supportsIdentifier: ${identifier.path} -> true (subdomain match)`);\n return true;\n } catch (error: unknown) {\n this.logger.warn(`Failed to parse identifier ${identifier.path}: ${(error as Error).message}`);\n return false;\n }\n }\n\n public override isRootContainer(identifier: ResourceIdentifier): boolean {\n try {\n const target = new URL(identifier.path);\n if (target.hostname.toLowerCase() === this.baseHost) {\n if (ensureTrailingSlash(target.href) === this.baseUrl) {\n return true;\n }\n\n const basePath = new URL(this.baseUrl).pathname;\n if (!target.pathname.endsWith('/')) {\n return false;\n }\n\n const pathname = ensureTrailingSlash(target.pathname);\n if (!pathname.startsWith(basePath)) {\n return false;\n }\n\n const relative = pathname.slice(basePath.length).replace(/^\\/+/, '');\n const segments = relative.split('/').filter(Boolean);\n return segments.length === 1 && !SERVER_ROOT_SEGMENTS.has(segments[0].toLowerCase());\n }\n return target.pathname === '/' || target.pathname === '';\n } catch {\n return false;\n }\n }\n}\n"]}
@@ -14,12 +14,8 @@
14
14
  * // 动态构建 URI
15
15
  * const custom = UDFS('CustomTerm'); // 'https://undefineds.co/ns#CustomTerm'
16
16
  *
17
- * // 用于 drizzle-solid
18
- * import { UDFS_NAMESPACE } from '@/vocab';
19
- * const table = podTable('Credential', {...}, {
20
- * type: UDFS.Credential,
21
- * namespace: UDFS_NAMESPACE,
22
- * });
17
+ * // 用于本地 adapter schema
18
+ * const predicate = UDFS('systemPrompt');
23
19
  * ```
24
20
  */
25
21
  export { UDFS, UDFS_NAMESPACE } from './udfs';
@@ -15,12 +15,8 @@
15
15
  * // 动态构建 URI
16
16
  * const custom = UDFS('CustomTerm'); // 'https://undefineds.co/ns#CustomTerm'
17
17
  *
18
- * // 用于 drizzle-solid
19
- * import { UDFS_NAMESPACE } from '@/vocab';
20
- * const table = podTable('Credential', {...}, {
21
- * type: UDFS.Credential,
22
- * namespace: UDFS_NAMESPACE,
23
- * });
18
+ * // 用于本地 adapter schema
19
+ * const predicate = UDFS('systemPrompt');
24
20
  * ```
25
21
  */
26
22
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AAEH,WAAW;AACX,+BAA8C;AAArC,4FAAA,IAAI,OAAA;AAAE,sGAAA,cAAc,OAAA;AAE7B,UAAU;AACV,uCAAuG;AAA9F,mGAAA,OAAO,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,kGAAA,MAAM,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,8FAAA,EAAE,OAAA","sourcesContent":["/**\n * Vocabulary 统一导出\n *\n * 使用方式:\n * ```typescript\n * import { UDFS, DCTerms, LDP } from '@/vocab';\n *\n * // 使用 Class\n * const type = UDFS.Credential; // 'https://undefineds.co/ns#Credential'\n *\n * // 使用 Property\n * const prop = UDFS.apiKey; // 'https://undefineds.co/ns#apiKey'\n *\n * // 动态构建 URI\n * const custom = UDFS('CustomTerm'); // 'https://undefineds.co/ns#CustomTerm'\n *\n * // 用于 drizzle-solid\n * import { UDFS_NAMESPACE } from '@/vocab';\n * const table = podTable('Credential', {...}, {\n * type: UDFS.Credential,\n * namespace: UDFS_NAMESPACE,\n * });\n * ```\n */\n\n// UDFS 词汇表\nexport { UDFS, UDFS_NAMESPACE } from './udfs';\n\n// 外部标准词汇表\nexport { DCTerms, LDP, Schema, RDF, RDFS, XSD, FOAF, ACL, Solid, SIOC, Meeting, WF } from './external';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vocab/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,WAAW;AACX,+BAA8C;AAArC,4FAAA,IAAI,OAAA;AAAE,sGAAA,cAAc,OAAA;AAE7B,UAAU;AACV,uCAAuG;AAA9F,mGAAA,OAAO,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,kGAAA,MAAM,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,iGAAA,KAAK,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,8FAAA,EAAE,OAAA","sourcesContent":["/**\n * Vocabulary 统一导出\n *\n * 使用方式:\n * ```typescript\n * import { UDFS, DCTerms, LDP } from '@/vocab';\n *\n * // 使用 Class\n * const type = UDFS.Credential; // 'https://undefineds.co/ns#Credential'\n *\n * // 使用 Property\n * const prop = UDFS.apiKey; // 'https://undefineds.co/ns#apiKey'\n *\n * // 动态构建 URI\n * const custom = UDFS('CustomTerm'); // 'https://undefineds.co/ns#CustomTerm'\n *\n * // 用于本地 adapter schema\n * const predicate = UDFS('systemPrompt');\n * ```\n */\n\n// UDFS 词汇表\nexport { UDFS, UDFS_NAMESPACE } from './udfs';\n\n// 外部标准词汇表\nexport { DCTerms, LDP, Schema, RDF, RDFS, XSD, FOAF, ACL, Solid, SIOC, Meeting, WF } from './external';\n"]}
@@ -107,6 +107,18 @@ export declare const UDFS: NamespaceObject<{
107
107
  executorType: string;
108
108
  /** System Prompt */
109
109
  systemPrompt: string;
110
+ /** ACP 权限模式 */
111
+ permissionMode: string;
112
+ /** 允许工具 */
113
+ allowedTool: string;
114
+ /** 禁用工具 */
115
+ disallowedTool: string;
116
+ /** Agent skill package */
117
+ skill: string;
118
+ /** @deprecated Codex rules are stored under .codex/rules, not Agent Profile refs */
119
+ rule: string;
120
+ /** Agent MCP server config definition */
121
+ mcpServer: string;
110
122
  /** 最大轮数 */
111
123
  maxTurns: string;
112
124
  /** 超时时间 */
@@ -135,6 +135,18 @@ exports.UDFS = createNamespace('udfs', 'https://undefineds.co/ns#', {
135
135
  executorType: 'executorType',
136
136
  /** System Prompt */
137
137
  systemPrompt: 'systemPrompt',
138
+ /** ACP 权限模式 */
139
+ permissionMode: 'permissionMode',
140
+ /** 允许工具 */
141
+ allowedTool: 'allowedTool',
142
+ /** 禁用工具 */
143
+ disallowedTool: 'disallowedTool',
144
+ /** Agent skill package */
145
+ skill: 'skill',
146
+ /** @deprecated Codex rules are stored under .codex/rules, not Agent Profile refs */
147
+ rule: 'rule',
148
+ /** Agent MCP server config definition */
149
+ mcpServer: 'mcpServer',
138
150
  /** 最大轮数 */
139
151
  maxTurns: 'maxTurns',
140
152
  /** 超时时间 */
@@ -1 +1 @@
1
- {"version":3,"file":"udfs.js","sourceRoot":"","sources":["../../src/vocab/udfs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDFS Vocabulary - Undefineds.co 词汇表\n *\n * 命名空间: https://undefineds.co/ns#\n * 前缀: udfs\n *\n * 命名规范:\n * - Class: 大写开头 (Credential, Provider, Model)\n * - Property: 小写开头 (apiKey, baseUrl, status)\n */\n\n// ============================================\n// Namespace Builder\n// ============================================\n\ntype NamespaceObject<T extends Record<string, string>> = ((term: string) => string) & {\n prefix: string;\n uri: string;\n /** @deprecated Use `uri` instead */\n NAMESPACE: string;\n} & { [K in keyof T]: string };\n\nfunction createNamespace<T extends Record<string, string>>(\n prefix: string,\n baseUri: string,\n terms: T,\n): NamespaceObject<T> {\n const ABSOLUTE_IRI = /^[a-zA-Z][a-zA-Z\\d+.-]*:/;\n\n const builder = ((term: string) =>\n ABSOLUTE_IRI.test(term) ? term : `${baseUri}${term}`) as NamespaceObject<T>;\n\n builder.prefix = prefix;\n builder.uri = baseUri;\n builder.NAMESPACE = baseUri;\n\n for (const [key, local] of Object.entries(terms)) {\n Object.defineProperty(builder, key, {\n value: builder(local),\n enumerable: true,\n });\n }\n\n return builder;\n}\n\n// ============================================\n// UDFS Vocabulary\n// ============================================\n\nexport const UDFS = createNamespace('udfs', 'https://undefineds.co/ns#', {\n // ========================================\n // Classes (大写开头)\n // ========================================\n\n // --- 凭据 ---\n /** 凭据基类 */\n Credential: 'Credential',\n /** API Key 凭据 */\n ApiKeyCredential: 'ApiKeyCredential',\n /** OAuth 凭据 */\n OAuthCredential: 'OAuthCredential',\n\n // --- AI 供应商和模型 ---\n /** AI 供应商(Embedding 用) */\n Provider: 'Provider',\n /** AI 模型 */\n Model: 'Model',\n /** @deprecated 旧 AgentProvider 名义,当前统一收敛到 Provider */\n AgentProvider: 'AgentProvider',\n /** Agent 配置 */\n AgentConfig: 'AgentConfig',\n /** Agent 运行状态 */\n AgentStatus: 'AgentStatus',\n /** Pod 级别 AI 配置(单例) */\n AIConfig: 'AIConfig',\n\n // --- 向量存储 ---\n /** 向量知识库 */\n VectorStore: 'VectorStore',\n /** 已索引文件 */\n IndexedFile: 'IndexedFile',\n\n // --- 任务 ---\n /** 异步任务 */\n Task: 'Task',\n\n // --- 索引 ---\n /** 文本分块 */\n TextChunk: 'TextChunk',\n\n // ========================================\n // Properties (小写开头)\n // ========================================\n\n // --- 通用属性 ---\n /** 状态 */\n status: 'status',\n /** 标签/名称 */\n label: 'label',\n /** 是否启用 */\n enabled: 'enabled',\n /** 创建时间 */\n createdAt: 'createdAt',\n /** 更新时间 */\n updatedAt: 'updatedAt',\n /** 显示名称 */\n displayName: 'displayName',\n /** 描述 */\n description: 'description',\n\n // --- 凭据属性 ---\n /** API 密钥 */\n apiKey: 'apiKey',\n /** API 基础 URL */\n baseUrl: 'baseUrl',\n /** 代理 URL */\n proxyUrl: 'proxyUrl',\n /** 服务类型 (ai, storage, dns) */\n service: 'service',\n /** 关联的供应商 */\n provider: 'provider',\n /** 最后使用时间 */\n lastUsedAt: 'lastUsedAt',\n /** 失败次数 */\n failCount: 'failCount',\n /** 限流重置时间 */\n rateLimitResetAt: 'rateLimitResetAt',\n\n // --- OAuth 凭据属性 ---\n /** OAuth Refresh Token */\n oauthRefreshToken: 'oauthRefreshToken',\n /** OAuth Access Token */\n oauthAccessToken: 'oauthAccessToken',\n /** OAuth Token 过期时间 */\n oauthExpiresAt: 'oauthExpiresAt',\n /** 项目 ID (Vertex AI) */\n projectId: 'projectId',\n /** 组织 ID (OpenAI) */\n organizationId: 'organizationId',\n\n // --- AI 模型属性 ---\n /** 模型类型 (embedding, chat, completion) */\n modelType: 'modelType',\n /** 向量维度 */\n dimension: 'dimension',\n /** 当前 embedding 模型 */\n embeddingModel: 'embeddingModel',\n /** 迁移前的模型 */\n previousModel: 'previousModel',\n /** 迁移状态 */\n migrationStatus: 'migrationStatus',\n /** 迁移进度 */\n migrationProgress: 'migrationProgress',\n /** 模型所属供应商 */\n isProvidedBy: 'isProvidedBy',\n /** 供应商拥有的模型 */\n hasModel: 'hasModel',\n /** 默认模型 */\n defaultModel: 'defaultModel',\n /** 运行时类型 (claude, codebuddy) */\n runtimeKind: 'runtimeKind',\n\n // --- Agent 属性 ---\n /** @deprecated 运行时应使用 runtimeKind */\n executorType: 'executorType',\n /** System Prompt */\n systemPrompt: 'systemPrompt',\n /** 最大轮数 */\n maxTurns: 'maxTurns',\n /** 超时时间 */\n timeout: 'timeout',\n /** Agent ID */\n agentId: 'agentId',\n /** 启动时间 */\n startedAt: 'startedAt',\n /** 完成时间 */\n completedAt: 'completedAt',\n /** 最后活动时间 */\n lastActivityAt: 'lastActivityAt',\n /** 当前任务 ID */\n currentTaskId: 'currentTaskId',\n /** 错误信息 */\n errorMessage: 'errorMessage',\n\n // --- 任务属性 ---\n /** 目标 Agent */\n agent: 'agent',\n /** 任务消息 */\n message: 'message',\n /** 执行结果 */\n result: 'result',\n /** 错误 */\n error: 'error',\n\n // --- Chat/Thread 属性 (扩展 SolidOS chat) ---\n /** 消息角色 (user/assistant/system) */\n role: 'role',\n /** 推理选项 (model, temperature, etc.) */\n inferenceOptions: 'inferenceOptions',\n /** 消息状态 (in_progress/completed/incomplete) */\n messageStatus: 'messageStatus',\n /** Thread 状态 (active/locked/closed) */\n threadStatus: 'threadStatus',\n\n // --- 工具调用属性 ---\n /** 工具名称 (bash, write, edit, etc.) */\n toolName: 'toolName',\n /** 工具调用 ID */\n toolCallId: 'toolCallId',\n /** 工具参数 (JSON) */\n toolArguments: 'toolArguments',\n /** 工具输出 */\n toolOutput: 'toolOutput',\n /** 工具状态 (pending/completed/failed) */\n toolStatus: 'toolStatus',\n\n // --- 权限审批属性 ---\n /** 权限请求的工具 */\n permissionTool: 'permissionTool',\n /** 权限请求原因 */\n permissionReason: 'permissionReason',\n /** 权限状态 (pending/approved/rejected) */\n permissionStatus: 'permissionStatus',\n /** 审批人 */\n approvedBy: 'approvedBy',\n /** 审批时间 */\n approvedAt: 'approvedAt',\n\n // --- 向量存储属性 ---\n /** 名称 */\n name: 'name',\n /** 关联的容器 */\n container: 'container',\n /** 分块策略 */\n chunkingStrategy: 'chunkingStrategy',\n /** 最后活跃时间 */\n lastActiveAt: 'lastActiveAt',\n\n // --- 索引文件属性 ---\n /** 文件 URL */\n fileUrl: 'fileUrl',\n /** 向量 ID */\n vectorId: 'vectorId',\n /** 使用字节数 */\n usageBytes: 'usageBytes',\n /** 最后错误 */\n lastError: 'lastError',\n /** 索引时间 */\n indexedAt: 'indexedAt',\n\n // --- 索引层级属性 ---\n /** 索引层级 (L0, L1, L2) */\n indexLevel: 'indexLevel',\n /** 最后索引时间 */\n lastIndexedAt: 'lastIndexedAt',\n /** 缓存的 Markdown */\n cachedMarkdown: 'cachedMarkdown',\n /** 文档的分块 */\n hasChunk: 'hasChunk',\n /** 父分块 */\n parentChunk: 'parentChunk',\n /** 分块层级 */\n level: 'level',\n /** 标题 */\n heading: 'heading',\n /** 起始偏移 */\n startOffset: 'startOffset',\n /** 结束偏移 */\n endOffset: 'endOffset',\n\n // --- 向量状态属性 (用于 .meta) ---\n /** 向量状态 */\n vectorStatus: 'vectorStatus',\n /** 分块数量 */\n chunkCount: 'chunkCount',\n /** 内容哈希 */\n contentHash: 'contentHash',\n /** 已索引数量 */\n indexedCount: 'indexedCount',\n /** 失败数量 */\n failedCount: 'failedCount',\n});\n\n/**\n * UDFS 命名空间配置(用于 drizzle-solid)\n */\nexport const UDFS_NAMESPACE = {\n prefix: UDFS.prefix,\n uri: UDFS.uri,\n};\n"]}
1
+ {"version":3,"file":"udfs.js","sourceRoot":"","sources":["../../src/vocab/udfs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * UDFS Vocabulary - Undefineds.co 词汇表\n *\n * 命名空间: https://undefineds.co/ns#\n * 前缀: udfs\n *\n * 命名规范:\n * - Class: 大写开头 (Credential, Provider, Model)\n * - Property: 小写开头 (apiKey, baseUrl, status)\n */\n\n// ============================================\n// Namespace Builder\n// ============================================\n\ntype NamespaceObject<T extends Record<string, string>> = ((term: string) => string) & {\n prefix: string;\n uri: string;\n /** @deprecated Use `uri` instead */\n NAMESPACE: string;\n} & { [K in keyof T]: string };\n\nfunction createNamespace<T extends Record<string, string>>(\n prefix: string,\n baseUri: string,\n terms: T,\n): NamespaceObject<T> {\n const ABSOLUTE_IRI = /^[a-zA-Z][a-zA-Z\\d+.-]*:/;\n\n const builder = ((term: string) =>\n ABSOLUTE_IRI.test(term) ? term : `${baseUri}${term}`) as NamespaceObject<T>;\n\n builder.prefix = prefix;\n builder.uri = baseUri;\n builder.NAMESPACE = baseUri;\n\n for (const [key, local] of Object.entries(terms)) {\n Object.defineProperty(builder, key, {\n value: builder(local),\n enumerable: true,\n });\n }\n\n return builder;\n}\n\n// ============================================\n// UDFS Vocabulary\n// ============================================\n\nexport const UDFS = createNamespace('udfs', 'https://undefineds.co/ns#', {\n // ========================================\n // Classes (大写开头)\n // ========================================\n\n // --- 凭据 ---\n /** 凭据基类 */\n Credential: 'Credential',\n /** API Key 凭据 */\n ApiKeyCredential: 'ApiKeyCredential',\n /** OAuth 凭据 */\n OAuthCredential: 'OAuthCredential',\n\n // --- AI 供应商和模型 ---\n /** AI 供应商(Embedding 用) */\n Provider: 'Provider',\n /** AI 模型 */\n Model: 'Model',\n /** @deprecated 旧 AgentProvider 名义,当前统一收敛到 Provider */\n AgentProvider: 'AgentProvider',\n /** Agent 配置 */\n AgentConfig: 'AgentConfig',\n /** Agent 运行状态 */\n AgentStatus: 'AgentStatus',\n /** Pod 级别 AI 配置(单例) */\n AIConfig: 'AIConfig',\n\n // --- 向量存储 ---\n /** 向量知识库 */\n VectorStore: 'VectorStore',\n /** 已索引文件 */\n IndexedFile: 'IndexedFile',\n\n // --- 任务 ---\n /** 异步任务 */\n Task: 'Task',\n\n // --- 索引 ---\n /** 文本分块 */\n TextChunk: 'TextChunk',\n\n // ========================================\n // Properties (小写开头)\n // ========================================\n\n // --- 通用属性 ---\n /** 状态 */\n status: 'status',\n /** 标签/名称 */\n label: 'label',\n /** 是否启用 */\n enabled: 'enabled',\n /** 创建时间 */\n createdAt: 'createdAt',\n /** 更新时间 */\n updatedAt: 'updatedAt',\n /** 显示名称 */\n displayName: 'displayName',\n /** 描述 */\n description: 'description',\n\n // --- 凭据属性 ---\n /** API 密钥 */\n apiKey: 'apiKey',\n /** API 基础 URL */\n baseUrl: 'baseUrl',\n /** 代理 URL */\n proxyUrl: 'proxyUrl',\n /** 服务类型 (ai, storage, dns) */\n service: 'service',\n /** 关联的供应商 */\n provider: 'provider',\n /** 最后使用时间 */\n lastUsedAt: 'lastUsedAt',\n /** 失败次数 */\n failCount: 'failCount',\n /** 限流重置时间 */\n rateLimitResetAt: 'rateLimitResetAt',\n\n // --- OAuth 凭据属性 ---\n /** OAuth Refresh Token */\n oauthRefreshToken: 'oauthRefreshToken',\n /** OAuth Access Token */\n oauthAccessToken: 'oauthAccessToken',\n /** OAuth Token 过期时间 */\n oauthExpiresAt: 'oauthExpiresAt',\n /** 项目 ID (Vertex AI) */\n projectId: 'projectId',\n /** 组织 ID (OpenAI) */\n organizationId: 'organizationId',\n\n // --- AI 模型属性 ---\n /** 模型类型 (embedding, chat, completion) */\n modelType: 'modelType',\n /** 向量维度 */\n dimension: 'dimension',\n /** 当前 embedding 模型 */\n embeddingModel: 'embeddingModel',\n /** 迁移前的模型 */\n previousModel: 'previousModel',\n /** 迁移状态 */\n migrationStatus: 'migrationStatus',\n /** 迁移进度 */\n migrationProgress: 'migrationProgress',\n /** 模型所属供应商 */\n isProvidedBy: 'isProvidedBy',\n /** 供应商拥有的模型 */\n hasModel: 'hasModel',\n /** 默认模型 */\n defaultModel: 'defaultModel',\n /** 运行时类型 (claude, codebuddy) */\n runtimeKind: 'runtimeKind',\n\n // --- Agent 属性 ---\n /** @deprecated 运行时应使用 runtimeKind */\n executorType: 'executorType',\n /** System Prompt */\n systemPrompt: 'systemPrompt',\n /** ACP 权限模式 */\n permissionMode: 'permissionMode',\n /** 允许工具 */\n allowedTool: 'allowedTool',\n /** 禁用工具 */\n disallowedTool: 'disallowedTool',\n /** Agent skill package */\n skill: 'skill',\n /** @deprecated Codex rules are stored under .codex/rules, not Agent Profile refs */\n rule: 'rule',\n /** Agent MCP server config definition */\n mcpServer: 'mcpServer',\n /** 最大轮数 */\n maxTurns: 'maxTurns',\n /** 超时时间 */\n timeout: 'timeout',\n /** Agent ID */\n agentId: 'agentId',\n /** 启动时间 */\n startedAt: 'startedAt',\n /** 完成时间 */\n completedAt: 'completedAt',\n /** 最后活动时间 */\n lastActivityAt: 'lastActivityAt',\n /** 当前任务 ID */\n currentTaskId: 'currentTaskId',\n /** 错误信息 */\n errorMessage: 'errorMessage',\n\n // --- 任务属性 ---\n /** 目标 Agent */\n agent: 'agent',\n /** 任务消息 */\n message: 'message',\n /** 执行结果 */\n result: 'result',\n /** 错误 */\n error: 'error',\n\n // --- Chat/Thread 属性 (扩展 SolidOS chat) ---\n /** 消息角色 (user/assistant/system) */\n role: 'role',\n /** 推理选项 (model, temperature, etc.) */\n inferenceOptions: 'inferenceOptions',\n /** 消息状态 (in_progress/completed/incomplete) */\n messageStatus: 'messageStatus',\n /** Thread 状态 (active/locked/closed) */\n threadStatus: 'threadStatus',\n\n // --- 工具调用属性 ---\n /** 工具名称 (bash, write, edit, etc.) */\n toolName: 'toolName',\n /** 工具调用 ID */\n toolCallId: 'toolCallId',\n /** 工具参数 (JSON) */\n toolArguments: 'toolArguments',\n /** 工具输出 */\n toolOutput: 'toolOutput',\n /** 工具状态 (pending/completed/failed) */\n toolStatus: 'toolStatus',\n\n // --- 权限审批属性 ---\n /** 权限请求的工具 */\n permissionTool: 'permissionTool',\n /** 权限请求原因 */\n permissionReason: 'permissionReason',\n /** 权限状态 (pending/approved/rejected) */\n permissionStatus: 'permissionStatus',\n /** 审批人 */\n approvedBy: 'approvedBy',\n /** 审批时间 */\n approvedAt: 'approvedAt',\n\n // --- 向量存储属性 ---\n /** 名称 */\n name: 'name',\n /** 关联的容器 */\n container: 'container',\n /** 分块策略 */\n chunkingStrategy: 'chunkingStrategy',\n /** 最后活跃时间 */\n lastActiveAt: 'lastActiveAt',\n\n // --- 索引文件属性 ---\n /** 文件 URL */\n fileUrl: 'fileUrl',\n /** 向量 ID */\n vectorId: 'vectorId',\n /** 使用字节数 */\n usageBytes: 'usageBytes',\n /** 最后错误 */\n lastError: 'lastError',\n /** 索引时间 */\n indexedAt: 'indexedAt',\n\n // --- 索引层级属性 ---\n /** 索引层级 (L0, L1, L2) */\n indexLevel: 'indexLevel',\n /** 最后索引时间 */\n lastIndexedAt: 'lastIndexedAt',\n /** 缓存的 Markdown */\n cachedMarkdown: 'cachedMarkdown',\n /** 文档的分块 */\n hasChunk: 'hasChunk',\n /** 父分块 */\n parentChunk: 'parentChunk',\n /** 分块层级 */\n level: 'level',\n /** 标题 */\n heading: 'heading',\n /** 起始偏移 */\n startOffset: 'startOffset',\n /** 结束偏移 */\n endOffset: 'endOffset',\n\n // --- 向量状态属性 (用于 .meta) ---\n /** 向量状态 */\n vectorStatus: 'vectorStatus',\n /** 分块数量 */\n chunkCount: 'chunkCount',\n /** 内容哈希 */\n contentHash: 'contentHash',\n /** 已索引数量 */\n indexedCount: 'indexedCount',\n /** 失败数量 */\n failedCount: 'failedCount',\n});\n\n/**\n * UDFS 命名空间配置(用于 drizzle-solid)\n */\nexport const UDFS_NAMESPACE = {\n prefix: UDFS.prefix,\n uri: UDFS.uri,\n};\n"]}
@@ -7,9 +7,9 @@ Chinese version: [`README.zh-CN.md`](README.zh-CN.md)
7
7
  Use it when you want:
8
8
 
9
9
  - TypeScript schemas for Pod data
10
- - explicit Pod layout through `base` and `subjectTemplate`
10
+ - explicit Pod layout through `base` and base-relative resource ids
11
11
  - a choice between a Solid-first API (`pod()`) and a Drizzle-shaped API (`drizzle()`)
12
- - exact entity reads and writes by IRI or locator
12
+ - exact resource reads and writes by base-relative id or IRI
13
13
  - SPARQL-backed reads when your backend exposes query capability
14
14
 
15
15
  ## What it is good at
@@ -56,7 +56,7 @@ If another in-process runtime already ships Comunica, inject that engine instead
56
56
  Use this for new code when you want Solid concepts to be explicit in the API:
57
57
 
58
58
  - `collection(table)`
59
- - `entity(table, iri)`
59
+ - `entity(resource, iri)`
60
60
  - `bind(schema, options)`
61
61
  - `sparql(query)`
62
62
 
@@ -65,10 +65,10 @@ Use this for new code when you want Solid concepts to be explicit in the API:
65
65
  Use this when you are migrating from `drizzle-orm` or want to keep builder-shaped code:
66
66
 
67
67
  - `select / insert / update / delete`
68
- - `db.query.<table>`
69
- - `findByLocator / findByIri`
70
- - `updateByLocator / updateByIri`
71
- - `deleteByLocator / deleteByIri`
68
+ - `db.query.<resource>`
69
+ - `findById / findByIri`
70
+ - `updateById / updateByIri`
71
+ - `deleteById / deleteByIri`
72
72
 
73
73
  Both styles use the same runtime. The difference is API shape, not storage behavior.
74
74
 
@@ -84,7 +84,6 @@ const posts = podTable('posts', {
84
84
  createdAt: datetime('createdAt').predicate('http://schema.org/dateCreated'),
85
85
  }, {
86
86
  base: 'https://alice.example/data/posts/',
87
- subjectTemplate: '{id}.ttl',
88
87
  type: 'http://schema.org/CreativeWork',
89
88
  });
90
89
 
@@ -92,7 +91,7 @@ const client = pod(session);
92
91
  await client.init(posts);
93
92
 
94
93
  const created = await client.collection(posts).create({
95
- id: 'post-1',
94
+ id: 'post-1.ttl',
96
95
  title: 'Hello Solid',
97
96
  content: 'Stored as RDF in a Pod document.',
98
97
  createdAt: new Date(),
@@ -119,7 +118,6 @@ const posts = podTable('posts', {
119
118
  title: string('title').predicate('http://schema.org/headline'),
120
119
  }, {
121
120
  base: 'https://alice.example/data/posts/',
122
- subjectTemplate: '{id}.ttl',
123
121
  type: 'http://schema.org/CreativeWork',
124
122
  });
125
123
 
@@ -127,17 +125,17 @@ const db = drizzle(session);
127
125
  await db.init(posts);
128
126
 
129
127
  await db.insert(posts).values({
130
- id: 'post-1',
128
+ id: 'post-1.ttl',
131
129
  title: 'Hello Solid',
132
130
  });
133
131
 
134
- const row = await db.findByLocator(posts, { id: 'post-1' });
132
+ const row = await db.findById(posts, 'post-1.ttl');
135
133
 
136
- await db.updateByLocator(posts, { id: 'post-1' }, {
134
+ await db.updateById(posts, 'post-1.ttl', {
137
135
  title: 'Updated title',
138
136
  });
139
137
 
140
- await db.deleteByLocator(posts, { id: 'post-1' });
138
+ await db.deleteById(posts, 'post-1.ttl');
141
139
  ```
142
140
 
143
141
  ## How Pod layout works
@@ -145,20 +143,22 @@ await db.deleteByLocator(posts, { id: 'post-1' });
145
143
  Every model describes both shape and placement.
146
144
 
147
145
  - `base` defines where documents live
148
- - `subjectTemplate` defines how business fields map to an IRI
146
+ - `id` is a base-relative resource id, such as `post-1.ttl` or `chat-1/messages.ttl#msg-1`
149
147
  - `type` is the primary persisted `rdf:type`
150
148
 
151
- Common `subjectTemplate` patterns:
149
+ `subjectTemplate` is deprecated and kept only for legacy or explicit compatibility layouts. New schemas should omit it and store the exact resource path in the `id` column.
150
+
151
+ Legacy `subjectTemplate` patterns still supported for compatibility:
152
152
 
153
153
  - `#{id}` — many entities in one document
154
154
  - `{id}.ttl` — one document per entity
155
155
  - `{id}.ttl#it` — one document per entity with a stable fragment
156
156
  - `{chatId}/messages.ttl#{id}` — partitioned layout with multiple locator variables
157
157
 
158
- If your template uses multiple variables, exact lookup requires either:
158
+ If a legacy template uses multiple variables, exact lookup requires either:
159
159
 
160
160
  - the full IRI, or
161
- - a complete locator with every required variable
161
+ - the base-relative resource id, for example `chat-1/messages.ttl#msg-1`
162
162
 
163
163
  ## Collection reads vs exact entity operations
164
164
 
@@ -170,19 +170,24 @@ Use collection reads when you want a list or filtered subset:
170
170
 
171
171
  - `client.collection(table).list(...)`
172
172
  - `db.select().from(table)...`
173
- - `db.query.<table>.findMany(...)`
173
+ - `db.query.<resource>.findMany(...)`
174
174
 
175
175
  ### Exact entity operations
176
176
 
177
177
  Use exact-target helpers when you mean one concrete entity:
178
178
 
179
- - `client.entity(table, iri)`
180
- - `db.findByIri(table, iri)`
181
- - `db.findByLocator(table, locator)`
179
+ - `client.entity(resource, iri)`
180
+ - `db.query.<resource>.findById(id)`
181
+ - `db.findById(resource, id)`
182
+ - `db.findByIri(resource, iri)`
183
+ - `db.updateById(resource, id, data)`
184
+ - `db.deleteById(resource, id)`
182
185
  - `db.updateByIri(...)`
183
- - `db.updateByLocator(...)`
184
186
  - `db.deleteByIri(...)`
185
- - `db.deleteByLocator(...)`
187
+
188
+ `findByLocator` / `updateByLocator` / `deleteByLocator` remain temporarily for
189
+ compatibility, but are deprecated. Prefer base-relative resource ids, generic
190
+ `*ByResource` helpers for mixed exact targets, or full IRIs.
186
191
 
187
192
  Do not rely on `where({ id: ... })` or `where(eq(table.id, ...))` as an exact-target shortcut.
188
193
 
@@ -232,6 +237,29 @@ Start here:
232
237
  - `docs/guides/notifications.md`
233
238
  - `docs/guides/data-discovery.md`
234
239
 
240
+ ## Support and collaboration
241
+
242
+ `drizzle-solid` is maintained as an open source infrastructure project.
243
+
244
+ If this library is useful to you, there are three practical ways to support it:
245
+
246
+ - become a design partner for an upcoming work package
247
+ - fund a specific roadmap item
248
+ - adopt it in a real Solid application and share requirements, edge cases, and feedback
249
+
250
+ See [`docs/SUPPORT.md`](docs/SUPPORT.md) for current priorities and collaboration options.
251
+
252
+ ## 2026 roadmap priorities
253
+
254
+ The current public roadmap is centered on the following Solid application infrastructure gaps:
255
+
256
+ 1. Schema lifecycle and migration support
257
+ 2. Access-aware discovery across TypeIndex / SAI-related flows
258
+ 3. Cross-Pod exact operations with explicit source scoping
259
+ 4. Interoperability testing across CSS, xpod, and plain-LDP-style setups
260
+
261
+ These are intentionally infrastructure-focused. The goal is to reduce app-specific Solid glue code and make Pod-native application development more dependable for downstream projects.
262
+
235
263
  ## Contributing
236
264
 
237
265
  Before pushing: