@xemahq/biome-sdk 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +62 -0
  3. package/dist/adapter/index.d.ts +7 -0
  4. package/dist/adapter/index.d.ts.map +1 -0
  5. package/dist/adapter/index.js +23 -0
  6. package/dist/adapter/index.js.map +1 -0
  7. package/dist/adapter/lib/action.d.ts +25 -0
  8. package/dist/adapter/lib/action.d.ts.map +1 -0
  9. package/dist/adapter/lib/action.js +3 -0
  10. package/dist/adapter/lib/action.js.map +1 -0
  11. package/dist/adapter/lib/provider-module.d.ts +41 -0
  12. package/dist/adapter/lib/provider-module.d.ts.map +1 -0
  13. package/dist/adapter/lib/provider-module.js +7 -0
  14. package/dist/adapter/lib/provider-module.js.map +1 -0
  15. package/dist/adapter/lib/resource.d.ts +25 -0
  16. package/dist/adapter/lib/resource.d.ts.map +1 -0
  17. package/dist/adapter/lib/resource.js +3 -0
  18. package/dist/adapter/lib/resource.js.map +1 -0
  19. package/dist/adapter/lib/result.d.ts +18 -0
  20. package/dist/adapter/lib/result.d.ts.map +1 -0
  21. package/dist/adapter/lib/result.js +12 -0
  22. package/dist/adapter/lib/result.js.map +1 -0
  23. package/dist/adapter/lib/sidecar-contract.d.ts +91 -0
  24. package/dist/adapter/lib/sidecar-contract.d.ts.map +1 -0
  25. package/dist/adapter/lib/sidecar-contract.js +19 -0
  26. package/dist/adapter/lib/sidecar-contract.js.map +1 -0
  27. package/dist/adapter/lib/webhook.d.ts +49 -0
  28. package/dist/adapter/lib/webhook.d.ts.map +1 -0
  29. package/dist/adapter/lib/webhook.js +3 -0
  30. package/dist/adapter/lib/webhook.js.map +1 -0
  31. package/dist/agent-workspace/index.d.ts +8 -0
  32. package/dist/agent-workspace/index.d.ts.map +1 -0
  33. package/dist/agent-workspace/index.js +24 -0
  34. package/dist/agent-workspace/index.js.map +1 -0
  35. package/dist/agent-workspace/lib/errors/error-codes.d.ts +16 -0
  36. package/dist/agent-workspace/lib/errors/error-codes.d.ts.map +1 -0
  37. package/dist/agent-workspace/lib/errors/error-codes.js +37 -0
  38. package/dist/agent-workspace/lib/errors/error-codes.js.map +1 -0
  39. package/dist/agent-workspace/lib/errors/index.d.ts +4 -0
  40. package/dist/agent-workspace/lib/errors/index.d.ts.map +1 -0
  41. package/dist/agent-workspace/lib/errors/index.js +20 -0
  42. package/dist/agent-workspace/lib/errors/index.js.map +1 -0
  43. package/dist/agent-workspace/lib/errors/mount-plan-error.d.ts +16 -0
  44. package/dist/agent-workspace/lib/errors/mount-plan-error.d.ts.map +1 -0
  45. package/dist/agent-workspace/lib/errors/mount-plan-error.js +26 -0
  46. package/dist/agent-workspace/lib/errors/mount-plan-error.js.map +1 -0
  47. package/dist/agent-workspace/lib/errors/mount-resolver-error.d.ts +34 -0
  48. package/dist/agent-workspace/lib/errors/mount-resolver-error.d.ts.map +1 -0
  49. package/dist/agent-workspace/lib/errors/mount-resolver-error.js +50 -0
  50. package/dist/agent-workspace/lib/errors/mount-resolver-error.js.map +1 -0
  51. package/dist/agent-workspace/lib/mount-resolver.d.ts +10 -0
  52. package/dist/agent-workspace/lib/mount-resolver.d.ts.map +1 -0
  53. package/dist/agent-workspace/lib/mount-resolver.js +3 -0
  54. package/dist/agent-workspace/lib/mount-resolver.js.map +1 -0
  55. package/dist/agent-workspace/lib/mount-source.d.ts +4 -0
  56. package/dist/agent-workspace/lib/mount-source.d.ts.map +1 -0
  57. package/dist/agent-workspace/lib/mount-source.js +3 -0
  58. package/dist/agent-workspace/lib/mount-source.js.map +1 -0
  59. package/dist/agent-workspace/lib/refid-resolver.d.ts +23 -0
  60. package/dist/agent-workspace/lib/refid-resolver.d.ts.map +1 -0
  61. package/dist/agent-workspace/lib/refid-resolver.js +103 -0
  62. package/dist/agent-workspace/lib/refid-resolver.js.map +1 -0
  63. package/dist/agent-workspace/lib/registries.d.ts +30 -0
  64. package/dist/agent-workspace/lib/registries.d.ts.map +1 -0
  65. package/dist/agent-workspace/lib/registries.js +88 -0
  66. package/dist/agent-workspace/lib/registries.js.map +1 -0
  67. package/dist/agent-workspace/lib/resolvers/agent-definition.resolver.d.ts +13 -0
  68. package/dist/agent-workspace/lib/resolvers/agent-definition.resolver.d.ts.map +1 -0
  69. package/dist/agent-workspace/lib/resolvers/agent-definition.resolver.js +25 -0
  70. package/dist/agent-workspace/lib/resolvers/agent-definition.resolver.js.map +1 -0
  71. package/dist/agent-workspace/lib/resolvers/artifact-store-collection.resolver.d.ts +13 -0
  72. package/dist/agent-workspace/lib/resolvers/artifact-store-collection.resolver.d.ts.map +1 -0
  73. package/dist/agent-workspace/lib/resolvers/artifact-store-collection.resolver.js +28 -0
  74. package/dist/agent-workspace/lib/resolvers/artifact-store-collection.resolver.js.map +1 -0
  75. package/dist/agent-workspace/lib/resolvers/artifact-version.resolver.d.ts +13 -0
  76. package/dist/agent-workspace/lib/resolvers/artifact-version.resolver.d.ts.map +1 -0
  77. package/dist/agent-workspace/lib/resolvers/artifact-version.resolver.js +25 -0
  78. package/dist/agent-workspace/lib/resolvers/artifact-version.resolver.js.map +1 -0
  79. package/dist/agent-workspace/lib/resolvers/clients.d.ts +122 -0
  80. package/dist/agent-workspace/lib/resolvers/clients.d.ts.map +1 -0
  81. package/dist/agent-workspace/lib/resolvers/clients.js +3 -0
  82. package/dist/agent-workspace/lib/resolvers/clients.js.map +1 -0
  83. package/dist/agent-workspace/lib/resolvers/deliverable-specs.resolver.d.ts +13 -0
  84. package/dist/agent-workspace/lib/resolvers/deliverable-specs.resolver.d.ts.map +1 -0
  85. package/dist/agent-workspace/lib/resolvers/deliverable-specs.resolver.js +24 -0
  86. package/dist/agent-workspace/lib/resolvers/deliverable-specs.resolver.js.map +1 -0
  87. package/dist/agent-workspace/lib/resolvers/deliverables.resolver.d.ts +13 -0
  88. package/dist/agent-workspace/lib/resolvers/deliverables.resolver.d.ts.map +1 -0
  89. package/dist/agent-workspace/lib/resolvers/deliverables.resolver.js +28 -0
  90. package/dist/agent-workspace/lib/resolvers/deliverables.resolver.js.map +1 -0
  91. package/dist/agent-workspace/lib/resolvers/index.d.ts +20 -0
  92. package/dist/agent-workspace/lib/resolvers/index.d.ts.map +1 -0
  93. package/dist/agent-workspace/lib/resolvers/index.js +36 -0
  94. package/dist/agent-workspace/lib/resolvers/index.js.map +1 -0
  95. package/dist/agent-workspace/lib/resolvers/instruction-section.resolver.d.ts +13 -0
  96. package/dist/agent-workspace/lib/resolvers/instruction-section.resolver.d.ts.map +1 -0
  97. package/dist/agent-workspace/lib/resolvers/instruction-section.resolver.js +22 -0
  98. package/dist/agent-workspace/lib/resolvers/instruction-section.resolver.js.map +1 -0
  99. package/dist/agent-workspace/lib/resolvers/kb-pages.resolver.d.ts +13 -0
  100. package/dist/agent-workspace/lib/resolvers/kb-pages.resolver.d.ts.map +1 -0
  101. package/dist/agent-workspace/lib/resolvers/kb-pages.resolver.js +36 -0
  102. package/dist/agent-workspace/lib/resolvers/kb-pages.resolver.js.map +1 -0
  103. package/dist/agent-workspace/lib/resolvers/kb-space.resolver.d.ts +13 -0
  104. package/dist/agent-workspace/lib/resolvers/kb-space.resolver.d.ts.map +1 -0
  105. package/dist/agent-workspace/lib/resolvers/kb-space.resolver.js +26 -0
  106. package/dist/agent-workspace/lib/resolvers/kb-space.resolver.js.map +1 -0
  107. package/dist/agent-workspace/lib/resolvers/rendered-agents-md.resolver.d.ts +13 -0
  108. package/dist/agent-workspace/lib/resolvers/rendered-agents-md.resolver.d.ts.map +1 -0
  109. package/dist/agent-workspace/lib/resolvers/rendered-agents-md.resolver.js +23 -0
  110. package/dist/agent-workspace/lib/resolvers/rendered-agents-md.resolver.js.map +1 -0
  111. package/dist/agent-workspace/lib/resolvers/rendered-context-json.resolver.d.ts +13 -0
  112. package/dist/agent-workspace/lib/resolvers/rendered-context-json.resolver.d.ts.map +1 -0
  113. package/dist/agent-workspace/lib/resolvers/rendered-context-json.resolver.js +24 -0
  114. package/dist/agent-workspace/lib/resolvers/rendered-context-json.resolver.js.map +1 -0
  115. package/dist/agent-workspace/lib/resolvers/rendered-system-overlay.resolver.d.ts +13 -0
  116. package/dist/agent-workspace/lib/resolvers/rendered-system-overlay.resolver.d.ts.map +1 -0
  117. package/dist/agent-workspace/lib/resolvers/rendered-system-overlay.resolver.js +23 -0
  118. package/dist/agent-workspace/lib/resolvers/rendered-system-overlay.resolver.js.map +1 -0
  119. package/dist/agent-workspace/lib/resolvers/scm-repo.resolver.d.ts +13 -0
  120. package/dist/agent-workspace/lib/resolvers/scm-repo.resolver.d.ts.map +1 -0
  121. package/dist/agent-workspace/lib/resolvers/scm-repo.resolver.js +28 -0
  122. package/dist/agent-workspace/lib/resolvers/scm-repo.resolver.js.map +1 -0
  123. package/dist/agent-workspace/lib/resolvers/session-attachment.resolver.d.ts +13 -0
  124. package/dist/agent-workspace/lib/resolvers/session-attachment.resolver.d.ts.map +1 -0
  125. package/dist/agent-workspace/lib/resolvers/session-attachment.resolver.js +28 -0
  126. package/dist/agent-workspace/lib/resolvers/session-attachment.resolver.js.map +1 -0
  127. package/dist/agent-workspace/lib/resolvers/skill-bundle.resolver.d.ts +13 -0
  128. package/dist/agent-workspace/lib/resolvers/skill-bundle.resolver.d.ts.map +1 -0
  129. package/dist/agent-workspace/lib/resolvers/skill-bundle.resolver.js +29 -0
  130. package/dist/agent-workspace/lib/resolvers/skill-bundle.resolver.js.map +1 -0
  131. package/dist/agent-workspace/lib/resolvers/static-literal.resolver.d.ts +11 -0
  132. package/dist/agent-workspace/lib/resolvers/static-literal.resolver.d.ts.map +1 -0
  133. package/dist/agent-workspace/lib/resolvers/static-literal.resolver.js +33 -0
  134. package/dist/agent-workspace/lib/resolvers/static-literal.resolver.js.map +1 -0
  135. package/dist/agent-workspace/lib/resolvers/types.d.ts +35 -0
  136. package/dist/agent-workspace/lib/resolvers/types.d.ts.map +1 -0
  137. package/dist/agent-workspace/lib/resolvers/types.js +3 -0
  138. package/dist/agent-workspace/lib/resolvers/types.js.map +1 -0
  139. package/dist/agent-workspace/lib/resolvers/utils/agent-run-context-cache.d.ts +70 -0
  140. package/dist/agent-workspace/lib/resolvers/utils/agent-run-context-cache.d.ts.map +1 -0
  141. package/dist/agent-workspace/lib/resolvers/utils/agent-run-context-cache.js +90 -0
  142. package/dist/agent-workspace/lib/resolvers/utils/agent-run-context-cache.js.map +1 -0
  143. package/dist/agent-workspace/lib/resolvers/utils/auth.d.ts +5 -0
  144. package/dist/agent-workspace/lib/resolvers/utils/auth.d.ts.map +1 -0
  145. package/dist/agent-workspace/lib/resolvers/utils/auth.js +19 -0
  146. package/dist/agent-workspace/lib/resolvers/utils/auth.js.map +1 -0
  147. package/dist/agent-workspace/lib/resolvers/utils/size-cap.d.ts +3 -0
  148. package/dist/agent-workspace/lib/resolvers/utils/size-cap.d.ts.map +1 -0
  149. package/dist/agent-workspace/lib/resolvers/utils/size-cap.js +23 -0
  150. package/dist/agent-workspace/lib/resolvers/utils/size-cap.js.map +1 -0
  151. package/dist/agent-workspace/lib/resolvers/utils/streaming.d.ts +3 -0
  152. package/dist/agent-workspace/lib/resolvers/utils/streaming.d.ts.map +1 -0
  153. package/dist/agent-workspace/lib/resolvers/utils/streaming.js +11 -0
  154. package/dist/agent-workspace/lib/resolvers/utils/streaming.js.map +1 -0
  155. package/dist/agent-workspace/lib/workspace-renderer.d.ts +13 -0
  156. package/dist/agent-workspace/lib/workspace-renderer.d.ts.map +1 -0
  157. package/dist/agent-workspace/lib/workspace-renderer.js +3 -0
  158. package/dist/agent-workspace/lib/workspace-renderer.js.map +1 -0
  159. package/dist/api/index.d.ts +11 -0
  160. package/dist/api/index.d.ts.map +1 -0
  161. package/dist/api/index.js +27 -0
  162. package/dist/api/index.js.map +1 -0
  163. package/dist/api/lib/api-manifest.d.ts +29 -0
  164. package/dist/api/lib/api-manifest.d.ts.map +1 -0
  165. package/dist/api/lib/api-manifest.js +28 -0
  166. package/dist/api/lib/api-manifest.js.map +1 -0
  167. package/dist/api/lib/biome-db.d.ts +2 -0
  168. package/dist/api/lib/biome-db.d.ts.map +1 -0
  169. package/dist/api/lib/biome-db.js +13 -0
  170. package/dist/api/lib/biome-db.js.map +1 -0
  171. package/dist/api/lib/code-tool-context.d.ts +16 -0
  172. package/dist/api/lib/code-tool-context.d.ts.map +1 -0
  173. package/dist/api/lib/code-tool-context.js +12 -0
  174. package/dist/api/lib/code-tool-context.js.map +1 -0
  175. package/dist/api/lib/code-tool-descriptor.d.ts +49 -0
  176. package/dist/api/lib/code-tool-descriptor.d.ts.map +1 -0
  177. package/dist/api/lib/code-tool-descriptor.js +3 -0
  178. package/dist/api/lib/code-tool-descriptor.js.map +1 -0
  179. package/dist/api/lib/code-tool.decorator.d.ts +17 -0
  180. package/dist/api/lib/code-tool.decorator.d.ts.map +1 -0
  181. package/dist/api/lib/code-tool.decorator.js +38 -0
  182. package/dist/api/lib/code-tool.decorator.js.map +1 -0
  183. package/dist/api/lib/mutation-context.d.ts +16 -0
  184. package/dist/api/lib/mutation-context.d.ts.map +1 -0
  185. package/dist/api/lib/mutation-context.js +17 -0
  186. package/dist/api/lib/mutation-context.js.map +1 -0
  187. package/dist/api/lib/pagination.d.ts +8 -0
  188. package/dist/api/lib/pagination.d.ts.map +1 -0
  189. package/dist/api/lib/pagination.js +7 -0
  190. package/dist/api/lib/pagination.js.map +1 -0
  191. package/dist/api/lib/provider-kind-mirror.d.ts +7 -0
  192. package/dist/api/lib/provider-kind-mirror.d.ts.map +1 -0
  193. package/dist/api/lib/provider-kind-mirror.js +11 -0
  194. package/dist/api/lib/provider-kind-mirror.js.map +1 -0
  195. package/dist/api/lib/request-context.d.ts +21 -0
  196. package/dist/api/lib/request-context.d.ts.map +1 -0
  197. package/dist/api/lib/request-context.js +51 -0
  198. package/dist/api/lib/request-context.js.map +1 -0
  199. package/dist/api/lib/route-registry-entry.d.ts +11 -0
  200. package/dist/api/lib/route-registry-entry.d.ts.map +1 -0
  201. package/dist/api/lib/route-registry-entry.js +3 -0
  202. package/dist/api/lib/route-registry-entry.js.map +1 -0
  203. package/dist/api/nest/controller-base.d.ts +6 -0
  204. package/dist/api/nest/controller-base.d.ts.map +1 -0
  205. package/dist/api/nest/controller-base.js +28 -0
  206. package/dist/api/nest/controller-base.js.map +1 -0
  207. package/dist/api/nest/events/events.controller.d.ts +10 -0
  208. package/dist/api/nest/events/events.controller.d.ts.map +1 -0
  209. package/dist/api/nest/events/events.controller.js +56 -0
  210. package/dist/api/nest/events/events.controller.js.map +1 -0
  211. package/dist/api/nest/health/health.controller.d.ts +19 -0
  212. package/dist/api/nest/health/health.controller.d.ts.map +1 -0
  213. package/dist/api/nest/health/health.controller.js +63 -0
  214. package/dist/api/nest/health/health.controller.js.map +1 -0
  215. package/dist/api/nest/health/health.module.d.ts +6 -0
  216. package/dist/api/nest/health/health.module.d.ts.map +1 -0
  217. package/dist/api/nest/health/health.module.js +29 -0
  218. package/dist/api/nest/health/health.module.js.map +1 -0
  219. package/dist/api/nest/index.d.ts +7 -0
  220. package/dist/api/nest/index.d.ts.map +1 -0
  221. package/dist/api/nest/index.js +23 -0
  222. package/dist/api/nest/index.js.map +1 -0
  223. package/dist/api/nest/module.d.ts +6 -0
  224. package/dist/api/nest/module.d.ts.map +1 -0
  225. package/dist/api/nest/module.js +34 -0
  226. package/dist/api/nest/module.js.map +1 -0
  227. package/dist/api/nest/request-context.d.ts +17 -0
  228. package/dist/api/nest/request-context.d.ts.map +1 -0
  229. package/dist/api/nest/request-context.js +75 -0
  230. package/dist/api/nest/request-context.js.map +1 -0
  231. package/dist/builder/index.d.ts +7 -0
  232. package/dist/builder/index.d.ts.map +1 -0
  233. package/dist/builder/index.js +23 -0
  234. package/dist/builder/index.js.map +1 -0
  235. package/dist/builder/lib/content-walker.d.ts +27 -0
  236. package/dist/builder/lib/content-walker.d.ts.map +1 -0
  237. package/dist/builder/lib/content-walker.js +274 -0
  238. package/dist/builder/lib/content-walker.js.map +1 -0
  239. package/dist/builder/lib/contribution-schemas.d.ts +348 -0
  240. package/dist/builder/lib/contribution-schemas.d.ts.map +1 -0
  241. package/dist/builder/lib/contribution-schemas.js +301 -0
  242. package/dist/builder/lib/contribution-schemas.js.map +1 -0
  243. package/dist/builder/lib/define-biome.d.ts +17 -0
  244. package/dist/builder/lib/define-biome.d.ts.map +1 -0
  245. package/dist/builder/lib/define-biome.js +11 -0
  246. package/dist/builder/lib/define-biome.js.map +1 -0
  247. package/dist/builder/lib/define-helpers.d.ts +6 -0
  248. package/dist/builder/lib/define-helpers.d.ts.map +1 -0
  249. package/dist/builder/lib/define-helpers.js +20 -0
  250. package/dist/builder/lib/define-helpers.js.map +1 -0
  251. package/dist/builder/lib/extends-precedence.d.ts +14 -0
  252. package/dist/builder/lib/extends-precedence.d.ts.map +1 -0
  253. package/dist/builder/lib/extends-precedence.js +113 -0
  254. package/dist/builder/lib/extends-precedence.js.map +1 -0
  255. package/dist/builder/lib/workflow-phase-config-loader.d.ts +18 -0
  256. package/dist/builder/lib/workflow-phase-config-loader.d.ts.map +1 -0
  257. package/dist/builder/lib/workflow-phase-config-loader.js +78 -0
  258. package/dist/builder/lib/workflow-phase-config-loader.js.map +1 -0
  259. package/dist/host/index.d.ts +11 -0
  260. package/dist/host/index.d.ts.map +1 -0
  261. package/dist/host/index.js +38 -0
  262. package/dist/host/index.js.map +1 -0
  263. package/dist/host/lib/agents-cross-validate.d.ts +7 -0
  264. package/dist/host/lib/agents-cross-validate.d.ts.map +1 -0
  265. package/dist/host/lib/agents-cross-validate.js +157 -0
  266. package/dist/host/lib/agents-cross-validate.js.map +1 -0
  267. package/dist/host/lib/biome-manifest.d.ts +808 -0
  268. package/dist/host/lib/biome-manifest.d.ts.map +1 -0
  269. package/dist/host/lib/biome-manifest.js +490 -0
  270. package/dist/host/lib/biome-manifest.js.map +1 -0
  271. package/dist/host/lib/bootstrap-contributions-service.d.ts +35 -0
  272. package/dist/host/lib/bootstrap-contributions-service.d.ts.map +1 -0
  273. package/dist/host/lib/bootstrap-contributions-service.js +79 -0
  274. package/dist/host/lib/bootstrap-contributions-service.js.map +1 -0
  275. package/dist/host/lib/default-state.d.ts +3 -0
  276. package/dist/host/lib/default-state.d.ts.map +1 -0
  277. package/dist/host/lib/default-state.js +20 -0
  278. package/dist/host/lib/default-state.js.map +1 -0
  279. package/dist/host/lib/integration-cross-validate.d.ts +12 -0
  280. package/dist/host/lib/integration-cross-validate.d.ts.map +1 -0
  281. package/dist/host/lib/integration-cross-validate.js +66 -0
  282. package/dist/host/lib/integration-cross-validate.js.map +1 -0
  283. package/dist/host/lib/system-overlay-contribution.d.ts +14 -0
  284. package/dist/host/lib/system-overlay-contribution.d.ts.map +1 -0
  285. package/dist/host/lib/system-overlay-contribution.js +3 -0
  286. package/dist/host/lib/system-overlay-contribution.js.map +1 -0
  287. package/dist/host/lib/topology.d.ts +7 -0
  288. package/dist/host/lib/topology.d.ts.map +1 -0
  289. package/dist/host/lib/topology.js +105 -0
  290. package/dist/host/lib/topology.js.map +1 -0
  291. package/dist/index.d.ts +9 -0
  292. package/dist/index.d.ts.map +1 -0
  293. package/dist/index.js +37 -0
  294. package/dist/index.js.map +1 -0
  295. package/dist/orchestrator-adapter/index.d.ts +3 -0
  296. package/dist/orchestrator-adapter/index.d.ts.map +1 -0
  297. package/dist/orchestrator-adapter/index.js +19 -0
  298. package/dist/orchestrator-adapter/index.js.map +1 -0
  299. package/dist/orchestrator-adapter/lib/orchestrator-adapter-registry.d.ts +6 -0
  300. package/dist/orchestrator-adapter/lib/orchestrator-adapter-registry.d.ts.map +1 -0
  301. package/dist/orchestrator-adapter/lib/orchestrator-adapter-registry.js +11 -0
  302. package/dist/orchestrator-adapter/lib/orchestrator-adapter-registry.js.map +1 -0
  303. package/dist/orchestrator-adapter/lib/orchestrator-adapter.d.ts +11 -0
  304. package/dist/orchestrator-adapter/lib/orchestrator-adapter.d.ts.map +1 -0
  305. package/dist/orchestrator-adapter/lib/orchestrator-adapter.js +3 -0
  306. package/dist/orchestrator-adapter/lib/orchestrator-adapter.js.map +1 -0
  307. package/package.json +110 -0
  308. package/src/adapter/index.ts +6 -0
  309. package/src/adapter/lib/action.ts +60 -0
  310. package/src/adapter/lib/provider-module.ts +140 -0
  311. package/src/adapter/lib/resource.ts +52 -0
  312. package/src/adapter/lib/result.ts +53 -0
  313. package/src/adapter/lib/sidecar-contract.ts +169 -0
  314. package/src/adapter/lib/webhook.ts +142 -0
  315. package/src/agent-workspace/index.ts +7 -0
  316. package/src/agent-workspace/lib/errors/error-codes.ts +44 -0
  317. package/src/agent-workspace/lib/errors/index.ts +3 -0
  318. package/src/agent-workspace/lib/errors/mount-plan-error.ts +29 -0
  319. package/src/agent-workspace/lib/errors/mount-resolver-error.ts +56 -0
  320. package/src/agent-workspace/lib/mount-resolver.ts +35 -0
  321. package/src/agent-workspace/lib/mount-source.ts +11 -0
  322. package/src/agent-workspace/lib/refid-resolver.ts +135 -0
  323. package/src/agent-workspace/lib/registries.ts +150 -0
  324. package/src/agent-workspace/lib/resolvers/agent-definition.resolver.ts +45 -0
  325. package/src/agent-workspace/lib/resolvers/artifact-store-collection.resolver.ts +43 -0
  326. package/src/agent-workspace/lib/resolvers/artifact-version.resolver.ts +52 -0
  327. package/src/agent-workspace/lib/resolvers/clients.ts +297 -0
  328. package/src/agent-workspace/lib/resolvers/deliverable-specs.resolver.ts +33 -0
  329. package/src/agent-workspace/lib/resolvers/deliverables.resolver.ts +41 -0
  330. package/src/agent-workspace/lib/resolvers/index.ts +19 -0
  331. package/src/agent-workspace/lib/resolvers/instruction-section.resolver.ts +36 -0
  332. package/src/agent-workspace/lib/resolvers/kb-pages.resolver.ts +62 -0
  333. package/src/agent-workspace/lib/resolvers/kb-space.resolver.ts +34 -0
  334. package/src/agent-workspace/lib/resolvers/rendered-agents-md.resolver.ts +40 -0
  335. package/src/agent-workspace/lib/resolvers/rendered-context-json.resolver.ts +41 -0
  336. package/src/agent-workspace/lib/resolvers/rendered-system-overlay.resolver.ts +39 -0
  337. package/src/agent-workspace/lib/resolvers/scm-repo.resolver.ts +43 -0
  338. package/src/agent-workspace/lib/resolvers/session-attachment.resolver.ts +37 -0
  339. package/src/agent-workspace/lib/resolvers/skill-bundle.resolver.ts +42 -0
  340. package/src/agent-workspace/lib/resolvers/static-literal.resolver.ts +69 -0
  341. package/src/agent-workspace/lib/resolvers/types.ts +94 -0
  342. package/src/agent-workspace/lib/resolvers/utils/agent-run-context-cache.ts +206 -0
  343. package/src/agent-workspace/lib/resolvers/utils/auth.ts +39 -0
  344. package/src/agent-workspace/lib/resolvers/utils/size-cap.ts +38 -0
  345. package/src/agent-workspace/lib/resolvers/utils/streaming.ts +22 -0
  346. package/src/agent-workspace/lib/workspace-renderer.ts +25 -0
  347. package/src/api/index.ts +10 -0
  348. package/src/api/lib/api-manifest.ts +54 -0
  349. package/src/api/lib/biome-db.ts +28 -0
  350. package/src/api/lib/code-tool-context.ts +45 -0
  351. package/src/api/lib/code-tool-descriptor.ts +102 -0
  352. package/src/api/lib/code-tool.decorator.ts +111 -0
  353. package/src/api/lib/mutation-context.ts +49 -0
  354. package/src/api/lib/pagination.ts +17 -0
  355. package/src/api/lib/provider-kind-mirror.ts +16 -0
  356. package/src/api/lib/request-context.ts +90 -0
  357. package/src/api/lib/route-registry-entry.ts +35 -0
  358. package/src/api/nest/controller-base.ts +59 -0
  359. package/src/api/nest/events/events.controller.ts +48 -0
  360. package/src/api/nest/health/health.controller.ts +36 -0
  361. package/src/api/nest/health/health.module.ts +29 -0
  362. package/src/api/nest/index.ts +6 -0
  363. package/src/api/nest/module.ts +51 -0
  364. package/src/api/nest/request-context.ts +166 -0
  365. package/src/builder/index.ts +26 -0
  366. package/src/builder/lib/content-walker.ts +383 -0
  367. package/src/builder/lib/contribution-schemas.ts +572 -0
  368. package/src/builder/lib/define-biome.ts +84 -0
  369. package/src/builder/lib/define-helpers.ts +42 -0
  370. package/src/builder/lib/extends-precedence.ts +195 -0
  371. package/src/builder/lib/workflow-phase-config-loader.ts +163 -0
  372. package/src/host/index.ts +39 -0
  373. package/src/host/lib/agents-cross-validate.ts +283 -0
  374. package/src/host/lib/biome-manifest.ts +1060 -0
  375. package/src/host/lib/bootstrap-contributions-service.ts +233 -0
  376. package/src/host/lib/default-state.ts +40 -0
  377. package/src/host/lib/integration-cross-validate.ts +140 -0
  378. package/src/host/lib/system-overlay-contribution.ts +53 -0
  379. package/src/host/lib/topology.ts +174 -0
  380. package/src/index.ts +58 -0
  381. package/src/orchestrator-adapter/index.ts +2 -0
  382. package/src/orchestrator-adapter/lib/orchestrator-adapter-registry.ts +8 -0
  383. package/src/orchestrator-adapter/lib/orchestrator-adapter.ts +20 -0
@@ -0,0 +1,297 @@
1
+ import type { Readable } from 'node:stream';
2
+ import type { AuthHeaders } from './utils/auth';
3
+
4
+ // ─── Narrow client interfaces ────────────────────────────────────────────────
5
+ //
6
+ // The kernel SDK never imports a concrete Orval client; consumers
7
+ // (workspace-proxy) provide implementations that delegate to the real
8
+ // clients with per-call header forwarding.
9
+ //
10
+ // Each interface is intentionally minimal — only the calls the matching
11
+ // resolver needs. Adding a method to satisfy a new resolver requires
12
+ // extending both the interface AND the workspace-proxy implementation
13
+ // in lockstep. CI boundary check (epoch 6) keeps the kernel free of
14
+ // service imports.
15
+
16
+ export interface ArtifactBlobMetadata {
17
+ /** Path the blob should land at, relative to the entry's slot+relPath. */
18
+ readonly relPath: string;
19
+ /** Optional content size hint; resolvers thread it as `sizeHint`. */
20
+ readonly sizeBytes: number | undefined;
21
+ }
22
+
23
+ export interface ArtifactCollectionStream {
24
+ readonly blobs: AsyncIterable<{
25
+ readonly metadata: ArtifactBlobMetadata;
26
+ readonly stream: Readable;
27
+ }>;
28
+ }
29
+
30
+ export interface ArtifactVersionContent {
31
+ /** Bytes for the resolver to write at the mount entry's path. */
32
+ readonly bytes: Uint8Array;
33
+ /** Resolved content type (from the artifact metadata when available). */
34
+ readonly contentType: string | undefined;
35
+ }
36
+
37
+ export interface ArtifactStoreClient {
38
+ /**
39
+ * Stream every blob in a collection. Implementations MUST forward
40
+ * `headers` verbatim to the upstream service so org-scoping is
41
+ * enforced at the upstream (not this layer).
42
+ */
43
+ streamCollection(
44
+ collectionId: string,
45
+ headers: AuthHeaders,
46
+ ): Promise<ArtifactCollectionStream>;
47
+ /**
48
+ * Fetch a single artifact version and materialise its content.
49
+ *
50
+ * If `payloadField` is set, the implementation extracts that field
51
+ * from the artifact's JSON payload and returns its bytes — the field
52
+ * value MUST be a string (`utf-8` is assumed). If unset, the entire
53
+ * payload is serialised as pretty-printed JSON.
54
+ *
55
+ * Fails fast on a missing/wrong-typed `payloadField` so an authoring
56
+ * mistake surfaces as a typed mount error rather than a stringified
57
+ * `[object Object]` landing on disk.
58
+ */
59
+ fetchVersionContent(
60
+ artifactId: string,
61
+ version: number,
62
+ payloadField: string | undefined,
63
+ headers: AuthHeaders,
64
+ ): Promise<ArtifactVersionContent>;
65
+ }
66
+
67
+ export interface KbPageBundle {
68
+ /** Combined, ordered markdown stream of every page in the space. */
69
+ readonly readable: Readable;
70
+ /** Optional total content size hint (sum of pages) when known. */
71
+ readonly sizeBytes: number | undefined;
72
+ }
73
+
74
+ /**
75
+ * Materialised content of a single KB page. Used by the `kb-pages`
76
+ * resolver to land individual pages as separate files under the
77
+ * `references/kb/<spaceId>/` slot — distinct from the bundled
78
+ * `kb-space` flow which produces a single `space.md`.
79
+ */
80
+ export interface KbPageContent {
81
+ /** Page slug (kebab-case). Used as the on-disk filename stem. */
82
+ readonly slug: string;
83
+ /** Page title (informational; carried for diagnostics). */
84
+ readonly title: string;
85
+ /** Raw markdown bytes (utf-8). */
86
+ readonly body: string;
87
+ }
88
+
89
+ export interface KbClient {
90
+ streamSpaceAsMarkdown(spaceId: string, headers: AuthHeaders): Promise<KbPageBundle>;
91
+ /**
92
+ * Fetch the rendered markdown content of a single page within a
93
+ * space. Resolver fails fast on a 404 (the mount entry surfaces
94
+ * `MOUNT_SOURCE_NOT_FOUND`) so a stale page selection never lands as
95
+ * a silent empty file.
96
+ */
97
+ fetchPageMarkdown(
98
+ spaceId: string,
99
+ pageSlug: string,
100
+ headers: AuthHeaders,
101
+ ): Promise<KbPageContent>;
102
+ }
103
+
104
+ export interface ScmRepoCheckoutInstruction {
105
+ readonly cloneUrl: string;
106
+ readonly ref: string;
107
+ readonly depth: number;
108
+ readonly filter: string | undefined;
109
+ }
110
+
111
+ export interface ScmClient {
112
+ /**
113
+ * Returns the metadata needed for the writer phase to invoke
114
+ * `git clone` into the staging directory. Bytes are not transferred
115
+ * through the proxy itself; the proxy spawns `git` which streams
116
+ * directly to disk.
117
+ */
118
+ resolveCheckout(
119
+ repoRef: string,
120
+ ref: string,
121
+ headers: AuthHeaders,
122
+ ): Promise<ScmRepoCheckoutInstruction>;
123
+ }
124
+
125
+ export interface SessionAttachmentItem {
126
+ readonly relPath: string;
127
+ readonly sizeBytes: number | undefined;
128
+ readonly readable: Readable;
129
+ }
130
+
131
+ export interface SessionAttachmentClient {
132
+ streamSessionAttachments(
133
+ sessionId: string,
134
+ headers: AuthHeaders,
135
+ ): Promise<AsyncIterable<SessionAttachmentItem>>;
136
+ }
137
+
138
+ export interface DeliverableSpecBundle {
139
+ /**
140
+ * Files that compose the spec on disk: `manifest.json`, optional
141
+ * `schema.json` / `schema.zod.ts`, optional `template.{md,docx,...}`,
142
+ * optional `assets/*`. Each file is small enough to ship as bytes.
143
+ */
144
+ readonly files: ReadonlyArray<{
145
+ readonly relPath: string;
146
+ readonly bytes: Uint8Array;
147
+ }>;
148
+ }
149
+
150
+ export interface DeliverableSpecsClient {
151
+ fetchSpecBundle(
152
+ contractKey: string,
153
+ headers: AuthHeaders,
154
+ ): Promise<DeliverableSpecBundle>;
155
+ }
156
+
157
+ /**
158
+ * One bundled resource inside a skill — a reference doc, script, asset,
159
+ * or template that ships alongside `SKILL.md`. `contentBase64` carries
160
+ * the raw bytes so binary assets survive the JSON wire intact.
161
+ */
162
+ export interface SkillBundleResource {
163
+ /** Path of the file relative to the skill directory. */
164
+ readonly relPath: string;
165
+ /** Resource classification surfaced by skill-registry-api. */
166
+ readonly type: string;
167
+ /** Decoded byte size; carried for diagnostics. */
168
+ readonly sizeBytes: number;
169
+ /** Base64-encoded raw bytes of the resource. */
170
+ readonly contentBase64: string;
171
+ }
172
+
173
+ /**
174
+ * A complete skill bundle: the raw `SKILL.md` text plus every bundled
175
+ * resource. The `skill-bundle` resolver materialises `SKILL.md` and one
176
+ * file per resource under `<skill-bundles slot>/<skillKey>/`.
177
+ */
178
+ export interface SkillBundle {
179
+ /** Hierarchical skill slug requested. */
180
+ readonly slug: string;
181
+ /** Raw `SKILL.md` markdown text. */
182
+ readonly skillMarkdown: string;
183
+ /** Bundled resources shipped alongside `SKILL.md`. */
184
+ readonly resources: readonly SkillBundleResource[];
185
+ }
186
+
187
+ /**
188
+ * Narrow client for skill-registry-api's multi-file skill-bundle
189
+ * endpoint. The implementation lives in workspace-proxy and delegates to
190
+ * the generated Orval client with `headers` forwarded verbatim for
191
+ * tenant-scoped auth.
192
+ */
193
+ export interface SkillRegistryClient {
194
+ /**
195
+ * `GET /skills/bundle?slug=<hierarchical-slug>`. Returns the raw
196
+ * `SKILL.md` text plus every bundled resource (base64-encoded bytes).
197
+ */
198
+ fetchSkillBundle(slug: string, headers: AuthHeaders): Promise<SkillBundle>;
199
+ }
200
+
201
+ /**
202
+ * Per-resource bundle response from llm-registry-api. Mirrors the shape
203
+ * of `BundleFileResponseDto` in the registry service. The kernel SDK
204
+ * does not import the DTO directly so this stays runtime-dep-free.
205
+ */
206
+ export interface LlmRegistryBundleFile {
207
+ readonly key: string;
208
+ readonly content: string;
209
+ readonly contentHash: string;
210
+ }
211
+
212
+ /**
213
+ * Rendered AGENTS.md + context.json + system-overlay from llm-registry-
214
+ * api's `agent-run-context/render` endpoint. One render call serves
215
+ * three single-file slots — the resolvers split the response into one
216
+ * entry each. Resolvers cache the response by `{ applyId,
217
+ * renderEndpointVersion }` so a single mount-apply hits the upstream
218
+ * once for all three.
219
+ */
220
+ export interface AgentRunContextRender {
221
+ readonly agentsMd: string;
222
+ readonly contextJson: Readonly<Record<string, unknown>>;
223
+ readonly systemOverlay: string;
224
+ }
225
+
226
+ /**
227
+ * Narrow client for llm-registry-api's per-resource bundle endpoints +
228
+ * the agent-run-context render. Implementations live in workspace-proxy
229
+ * and delegate to the generated Orval client with `headers` forwarded
230
+ * verbatim for tenant-scoped auth.
231
+ */
232
+ export interface LlmRegistryClient {
233
+ /**
234
+ * `GET /agent-definitions/internal/agents/:slug/bundle`. Returns the
235
+ * `.opencode/agents/<slug>.md` bytes for the requested agent at the
236
+ * highest matching scope tier (project → org → biome → system).
237
+ */
238
+ fetchAgentBundleFile(
239
+ params: {
240
+ readonly slug: string;
241
+ readonly agentMode: 'primary' | 'subagent';
242
+ },
243
+ headers: AuthHeaders,
244
+ ): Promise<LlmRegistryBundleFile>;
245
+
246
+ /**
247
+ * `GET /agent-definitions/internal/instruction-sections/:sectionKey/bundle`.
248
+ * Returns the markdown for one instruction section. Mounted at
249
+ * `/workspace/.xema/instructions/<sectionKey>.md` and auto-discovered
250
+ * by OpenCode via the static `instructions` glob.
251
+ */
252
+ fetchInstructionSectionBundleFile(
253
+ params: { readonly sectionKey: string },
254
+ headers: AuthHeaders,
255
+ ): Promise<LlmRegistryBundleFile>;
256
+
257
+ /**
258
+ * `POST /agent-run-context/render`. Returns the rendered AGENTS.md +
259
+ * context.json + system-overlay for the invocation. Called by all
260
+ * three rendered-* resolvers (agents-md / context-json /
261
+ * system-overlay) — the resolver-shared cache coalesces the three
262
+ * calls into one upstream request per mount-apply by hashing the
263
+ * params consistently.
264
+ */
265
+ renderAgentRunContext(
266
+ params: {
267
+ readonly agentSlug: string;
268
+ readonly projectId: string;
269
+ readonly role: string;
270
+ readonly deliverableSpecRef?: string;
271
+ readonly workflowRunId?: string;
272
+ readonly jobRunId?: string;
273
+ readonly sessionId?: string;
274
+ readonly workflowInputs?: Readonly<Record<string, unknown>>;
275
+ readonly mounts?: ReadonlyArray<{
276
+ readonly mount: string;
277
+ readonly mode: 'read-only' | 'read-write';
278
+ }>;
279
+ readonly inputArtifacts?: ReadonlyArray<{
280
+ readonly path: string;
281
+ readonly contentType?: string;
282
+ readonly sourceArtifactId: string;
283
+ readonly sourceVersion: number;
284
+ }>;
285
+ readonly workingFiles?: ReadonlyArray<{
286
+ readonly slug: string;
287
+ readonly path: string;
288
+ readonly format: 'markdown' | 'html' | 'json' | 'yaml' | 'text';
289
+ readonly syncDirection: 'down-only' | 'up-only' | 'bidirectional';
290
+ readonly sourceKind: string;
291
+ readonly sourceRef: Readonly<Record<string, string>>;
292
+ }>;
293
+ readonly hasRetryContext?: boolean;
294
+ },
295
+ headers: AuthHeaders,
296
+ ): Promise<AgentRunContextRender>;
297
+ }
@@ -0,0 +1,33 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import type { DeliverableSpecsClient } from './clients';
5
+ import { assertAuthHeaders } from './utils/auth';
6
+
7
+ /**
8
+ * `deliverable-specs` mount kind — fetches the rendered spec bundle
9
+ * (manifest.json + schema files + template + assets) and emits each
10
+ * file as a literal MountEntry. Bundle files are typically small (KB,
11
+ * not MB) so literal bytes are appropriate.
12
+ */
13
+ export class DeliverableSpecsResolver implements MountResolver<'deliverable-specs'> {
14
+ readonly kind = 'deliverable-specs' as const;
15
+
16
+ constructor(private readonly client: DeliverableSpecsClient) {}
17
+
18
+ async *resolve(
19
+ source: Extract<MountSource, { kind: 'deliverable-specs' }>,
20
+ slotCtx: ResolveSlotContext,
21
+ ctx: ResolveContext,
22
+ ): ResolvedMountEntries {
23
+ const headers = assertAuthHeaders(ctx);
24
+ const bundle = await this.client.fetchSpecBundle(source.contractKey, headers);
25
+ for (const file of bundle.files) {
26
+ yield {
27
+ relPath: file.relPath,
28
+ mode: slotCtx.mode,
29
+ body: { kind: 'literal', bytes: file.bytes },
30
+ };
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,41 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import type { ArtifactStoreClient } from './clients';
5
+ import { assertAuthHeaders } from './utils/auth';
6
+
7
+ /**
8
+ * `deliverables` mount kind — agent-authored outputs from an upstream
9
+ * pipeline phase. Backed by the same artifact-store substrate as
10
+ * `artifact-store-collection`; the caller-supplied `contractKey`
11
+ * resolves to the collection holding that phase's deliverables.
12
+ *
13
+ * Mode flows from the plan entry through `slotCtx.mode` — the
14
+ * composer is the single source of truth for whether the slot is
15
+ * read-only or read-write per the manifest.
16
+ */
17
+ export class DeliverablesResolver implements MountResolver<'deliverables'> {
18
+ readonly kind = 'deliverables' as const;
19
+
20
+ constructor(private readonly client: ArtifactStoreClient) {}
21
+
22
+ async *resolve(
23
+ source: Extract<MountSource, { kind: 'deliverables' }>,
24
+ slotCtx: ResolveSlotContext,
25
+ ctx: ResolveContext,
26
+ ): ResolvedMountEntries {
27
+ const headers = assertAuthHeaders(ctx);
28
+ const collection = await this.client.streamCollection(source.contractKey, headers);
29
+ for await (const blob of collection.blobs) {
30
+ yield {
31
+ relPath: blob.metadata.relPath,
32
+ mode: slotCtx.mode,
33
+ body: {
34
+ kind: 'stream',
35
+ readable: blob.stream,
36
+ sizeHint: blob.metadata.sizeBytes,
37
+ },
38
+ };
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,19 @@
1
+ export * from './types';
2
+ export * from './clients';
3
+ export * from './utils/auth';
4
+ export * from './utils/size-cap';
5
+ export * from './utils/streaming';
6
+ export * from './static-literal.resolver';
7
+ export * from './artifact-store-collection.resolver';
8
+ export * from './kb-space.resolver';
9
+ export * from './scm-repo.resolver';
10
+ export * from './session-attachment.resolver';
11
+ export * from './deliverable-specs.resolver';
12
+ export * from './deliverables.resolver';
13
+ export * from './agent-definition.resolver';
14
+ export * from './skill-bundle.resolver';
15
+ export * from './instruction-section.resolver';
16
+ export * from './rendered-agents-md.resolver';
17
+ export * from './rendered-context-json.resolver';
18
+ export * from './rendered-system-overlay.resolver';
19
+ export * from './utils/agent-run-context-cache';
@@ -0,0 +1,36 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { LlmRegistryClient } from './clients';
4
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
5
+ import { assertAuthHeaders } from './utils/auth';
6
+
7
+ /**
8
+ * `instruction-section` mount kind — emits one `<sectionKey>.md` file
9
+ * under the `instructions` slot (`/workspace/.xema/instructions/`).
10
+ * Auto-discovered by OpenCode at session start via the static
11
+ * `instructions` glob declared in base `opencode.jsonc`.
12
+ */
13
+ export class InstructionSectionResolver implements MountResolver<'instruction-section'> {
14
+ readonly kind = 'instruction-section' as const;
15
+
16
+ constructor(private readonly client: LlmRegistryClient) {}
17
+
18
+ async *resolve(
19
+ source: Extract<MountSource, { kind: 'instruction-section' }>,
20
+ slotCtx: ResolveSlotContext,
21
+ ctx: ResolveContext,
22
+ ): ResolvedMountEntries {
23
+ const headers = assertAuthHeaders(ctx);
24
+ const file = await this.client.fetchInstructionSectionBundleFile(
25
+ { sectionKey: source.sectionKey },
26
+ headers,
27
+ );
28
+ yield {
29
+ // Writer composes slot + entryRelPath + relPath. The mount plan
30
+ // already sets entryRelPath to "<sectionKey>.md".
31
+ relPath: '',
32
+ mode: slotCtx.mode,
33
+ body: { kind: 'literal', bytes: Buffer.from(file.content, 'utf8') },
34
+ };
35
+ }
36
+ }
@@ -0,0 +1,62 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import type { KbClient } from './clients';
5
+ import { assertAuthHeaders } from './utils/auth';
6
+ import { MountSourceUpstreamError } from '../errors';
7
+
8
+ /**
9
+ * `kb-pages` mount kind — materialises a curated set of pages from a
10
+ * single KB space as individual markdown files under the entry's
11
+ * slot+relPath. Each page lands at `<pageSlug>.md`.
12
+ *
13
+ * Distinct from `kb-space` (which concatenates an entire space into one
14
+ * `space.md` bundle). The `kb-pages` flow is the building block for
15
+ * runtime KB mounting on Interactive Sessions / Brainstorming — the
16
+ * user picks individual pages to attach to a live session.
17
+ *
18
+ * Fail-fast contract:
19
+ * - empty `pageSlugs` is a programming error (the caller is expected
20
+ * to drop empty mount entries before composing the plan); we throw
21
+ * so a stale composer state cannot land a zero-byte mount.
22
+ * - per-page 404 / upstream errors propagate as
23
+ * `MountSourceUpstreamError` (mapped by workspace-proxy to
24
+ * `MOUNT_SOURCE_NOT_FOUND` / `MOUNT_UPSTREAM_BAD_GATEWAY`).
25
+ */
26
+ export class KbPagesResolver implements MountResolver<'kb-pages'> {
27
+ readonly kind = 'kb-pages' as const;
28
+
29
+ constructor(private readonly client: KbClient) {}
30
+
31
+ async *resolve(
32
+ source: Extract<MountSource, { kind: 'kb-pages' }>,
33
+ slotCtx: ResolveSlotContext,
34
+ ctx: ResolveContext,
35
+ ): ResolvedMountEntries {
36
+ const headers = assertAuthHeaders(ctx);
37
+ // De-duplicate slugs preserving first-occurrence order so the
38
+ // on-disk layout is deterministic regardless of caller-side
39
+ // accidental duplicates.
40
+ const seen = new Set<string>();
41
+ const slugs = source.pageSlugs.filter((s) => {
42
+ if (seen.has(s)) return false;
43
+ seen.add(s);
44
+ return true;
45
+ });
46
+ if (slugs.length === 0) {
47
+ throw new MountSourceUpstreamError(
48
+ `kb-pages mount for space '${source.spaceId}' has an empty pageSlugs[] selection`,
49
+ { spaceId: source.spaceId },
50
+ );
51
+ }
52
+ for (const pageSlug of slugs) {
53
+ const page = await this.client.fetchPageMarkdown(source.spaceId, pageSlug, headers);
54
+ const bytes = Buffer.from(page.body, 'utf8');
55
+ yield {
56
+ relPath: `${pageSlug}.md`,
57
+ mode: slotCtx.mode,
58
+ body: { kind: 'literal', bytes },
59
+ };
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,34 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import type { KbClient } from './clients';
5
+ import { assertAuthHeaders } from './utils/auth';
6
+
7
+ /**
8
+ * `kb-space` mount kind — streams the rendered markdown of every page
9
+ * in a knowledge-base space into a single bundle file. The bundle is
10
+ * landed at `space.md` within the entry's slot+relPath.
11
+ */
12
+ export class KbSpaceResolver implements MountResolver<'kb-space'> {
13
+ readonly kind = 'kb-space' as const;
14
+
15
+ constructor(private readonly client: KbClient) {}
16
+
17
+ async *resolve(
18
+ source: Extract<MountSource, { kind: 'kb-space' }>,
19
+ slotCtx: ResolveSlotContext,
20
+ ctx: ResolveContext,
21
+ ): ResolvedMountEntries {
22
+ const headers = assertAuthHeaders(ctx);
23
+ const bundle = await this.client.streamSpaceAsMarkdown(source.spaceId, headers);
24
+ yield {
25
+ relPath: 'space.md',
26
+ mode: slotCtx.mode,
27
+ body: {
28
+ kind: 'stream',
29
+ readable: bundle.readable,
30
+ sizeHint: bundle.sizeBytes,
31
+ },
32
+ };
33
+ }
34
+ }
@@ -0,0 +1,40 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import { assertAuthHeaders } from './utils/auth';
5
+ import {
6
+ renderParamsFromSource,
7
+ type RenderedAgentRunContextCache,
8
+ } from './utils/agent-run-context-cache';
9
+
10
+ /**
11
+ * `rendered-agents-md` mount kind — emits the rendered `AGENTS.md`
12
+ * bytes for the `agents-md` single-file slot (`/workspace/AGENTS.md`).
13
+ *
14
+ * Single-file slots require `relPath === ''` (validated upstream by
15
+ * `plan-validator`). Shares the `agent-run-context/render` call with
16
+ * `rendered-context-json` + `rendered-system-overlay`. The composer
17
+ * fills the same `RenderedAgentRunContextParams` superset on all three
18
+ * sources and `renderParamsFromSource` projects them identically — so
19
+ * the cache coalesces the three resolvers onto one upstream call per
20
+ * mount-apply.
21
+ */
22
+ export class RenderedAgentsMdResolver implements MountResolver<'rendered-agents-md'> {
23
+ readonly kind = 'rendered-agents-md' as const;
24
+
25
+ constructor(private readonly cache: RenderedAgentRunContextCache) {}
26
+
27
+ async *resolve(
28
+ source: Extract<MountSource, { kind: 'rendered-agents-md' }>,
29
+ slotCtx: ResolveSlotContext,
30
+ ctx: ResolveContext,
31
+ ): ResolvedMountEntries {
32
+ const headers = assertAuthHeaders(ctx);
33
+ const rendered = await this.cache.render(renderParamsFromSource(source), headers);
34
+ yield {
35
+ relPath: '',
36
+ mode: slotCtx.mode,
37
+ body: { kind: 'literal', bytes: Buffer.from(rendered.agentsMd, 'utf8') },
38
+ };
39
+ }
40
+ }
@@ -0,0 +1,41 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import { assertAuthHeaders } from './utils/auth';
5
+ import {
6
+ renderParamsFromSource,
7
+ type RenderedAgentRunContextCache,
8
+ } from './utils/agent-run-context-cache';
9
+
10
+ /**
11
+ * `rendered-context-json` mount kind — emits the rendered
12
+ * `context.json` bytes for the `context-json` single-file slot
13
+ * (`/workspace/context.json`).
14
+ *
15
+ * Shares the `agent-run-context/render` call with `rendered-agents-md`
16
+ * + `rendered-system-overlay` via the resolver-bound cache. See
17
+ * `renderParamsFromSource` for why all three resolvers MUST project
18
+ * the source through the same helper.
19
+ */
20
+ export class RenderedContextJsonResolver
21
+ implements MountResolver<'rendered-context-json'>
22
+ {
23
+ readonly kind = 'rendered-context-json' as const;
24
+
25
+ constructor(private readonly cache: RenderedAgentRunContextCache) {}
26
+
27
+ async *resolve(
28
+ source: Extract<MountSource, { kind: 'rendered-context-json' }>,
29
+ slotCtx: ResolveSlotContext,
30
+ ctx: ResolveContext,
31
+ ): ResolvedMountEntries {
32
+ const headers = assertAuthHeaders(ctx);
33
+ const rendered = await this.cache.render(renderParamsFromSource(source), headers);
34
+ const json = JSON.stringify(rendered.contextJson, null, 2);
35
+ yield {
36
+ relPath: '',
37
+ mode: slotCtx.mode,
38
+ body: { kind: 'literal', bytes: Buffer.from(json, 'utf8') },
39
+ };
40
+ }
41
+ }
@@ -0,0 +1,39 @@
1
+ import type { MountResolver } from '../mount-resolver';
2
+ import type { MountSource } from '../mount-source';
3
+ import type { ResolveContext, ResolveSlotContext, ResolvedMountEntries } from './types';
4
+ import { assertAuthHeaders } from './utils/auth';
5
+ import {
6
+ renderParamsFromSource,
7
+ type RenderedAgentRunContextCache,
8
+ } from './utils/agent-run-context-cache';
9
+
10
+ /**
11
+ * `rendered-system-overlay` mount kind — emits the rendered Xema
12
+ * platform overlay for the `system-overlay` single-file slot
13
+ * (`/workspace/.xema/system-overlay.md`).
14
+ *
15
+ * Same `agent-run-context/render` call as `rendered-agents-md` and
16
+ * `rendered-context-json`. See `renderParamsFromSource` for the
17
+ * shared-cache contract that makes the three calls coalesce into one.
18
+ */
19
+ export class RenderedSystemOverlayResolver
20
+ implements MountResolver<'rendered-system-overlay'>
21
+ {
22
+ readonly kind = 'rendered-system-overlay' as const;
23
+
24
+ constructor(private readonly cache: RenderedAgentRunContextCache) {}
25
+
26
+ async *resolve(
27
+ source: Extract<MountSource, { kind: 'rendered-system-overlay' }>,
28
+ slotCtx: ResolveSlotContext,
29
+ ctx: ResolveContext,
30
+ ): ResolvedMountEntries {
31
+ const headers = assertAuthHeaders(ctx);
32
+ const rendered = await this.cache.render(renderParamsFromSource(source), headers);
33
+ yield {
34
+ relPath: '',
35
+ mode: slotCtx.mode,
36
+ body: { kind: 'literal', bytes: Buffer.from(rendered.systemOverlay, 'utf8') },
37
+ };
38
+ }
39
+ }